2016-11-25 3 views
2

Я уже обрабатываю санитацию на моей стороне сервера, любой неправильный входной текст, например <script>alert('hi')</script>, может обрабатываться должным образом. Но поскольку я также огибаю данные с помощью WebSocket, так что эта часть будет нарушена, если пользователь отправитьдезинфицировать ввод пользователя на стороне клиента с помощью javascript

<script>alert('hi')</script> 

Я нашел encodeURIComponent, но спутать с encodeURI, который один для обработки XSS в стороне клиента?

+0

encodeURI() не будет кодировать: '~ @ # $ & *() =:? /, + '' encodeURIComponent() не будет кодироваться: '~! *() '' теперь вы решаете! , Но можете ли вы действительно доверять стороне клиента? – Viney

+0

Для XSS Sanitization просмотрите библиотеку [xss-filters] Yahoo (https://github.com/yahoo/xss-filters) или в [DOMPurify] (https://github.com/cure53/DOMPurify). –

ответ

2

Для XSS Sanitization ознакомьтесь с библиотекой Yahoo xss-filters или по телефону DOMPurify.

Вот пример с использованием DOMPurify:

var input = document.getElementById('input'), 
 
    result = document.getElementById('result'), 
 
    button = document.getElementById('button').addEventListener('click', function(){ 
 
     // Sanitize 
 
     var clean = DOMPurify.sanitize(input.value, {SAFE_FOR_TEMPLATES: true}); 
 

 
     result.innerHTML = clean; 
 
     console.log(clean); 
 
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/dompurify/0.8.4/purify.min.js"></script> 
 

 
<input type="text" id="input"> 
 
<button id="button">Send</button> 
 
<p id="result"></p>

+0

Я использовал 'var isValid = ($ ('input'). Val(). IndexOf ('')> -1)? false true; «Могу ли я? –

+0

Не думайте так .. Предположим, что один пример: кто-то пишет: '' –

+0

Я знаю, поэтому просто 'indexOf ('script')' –