2016-10-28 7 views
1

Использование jQuery на моем веб-сайте на основе того, какая страница предоставляется пользователю, я хотел бы найти все селектора входных текстовых элементов и избежать всех специальных символов в чтобы предотвратить межсайтовый скриптинг.Escape All Special Characters для всех типов ввода TEXT для предотвращения XSS

В основном при загрузке страницы или представить, найти все типы входных данных из «текста», то есть:

<input type="text" class="datepicker hasDatepicker form-control" id="START_DATE" name="s_date" maxlength="4000" size="30" value="" autocomplete="off"> 

и с Jquery, найти и заменить все специальные символы, такие как:

</option<script>alert("XSS")</script> 

, чтобы остановить XSS.

ответ

4

Вы не можете полагаться на скрипты на стороне клиента, чтобы предотвратить межсайтовый скриптинг из данных, первоначально представленных на DOM.

Вы не можете никоим образом гарантировать, что подозрительный код не будет выполнен до вашего, что приведет к его неэффективности. Это должно быть сделано на стороне сервера, но вы не указали язык, поэтому я не могу помочь там.

Вы можете сделать это, если данные передаются через AJAX и добавляются к DOM, но это, похоже, не так. Если AJAX - это случай, вам не нужно беспокоиться, если вы не используете eval или аналогичный.

Чтобы обеспечить простой пример, откройте JS консоль в этом окне и введите следующую

$('input').val("<script>alert('derp');</script>"); 

Вы не получите предупреждение, а данные красиво добавляется в строку поиска элемента в правом верхнем углу экран. Только для пинков, вы можете попробовать чистый JS тоже:

document.getElementsByTagName('input')[0].value = "<script>alert('test');</script>"; 

Кроме того, если вы создаете элементы на DOM с unsanitized данных по какой-то причине - вы должны убедиться, что вы не просто конкатенации строк, чтобы сделать их , но вместо этого создают узлы правильно через JS (aka no jQuery .html()).

+1

Вы * не можете * полагаться на клиентский код для дезинфекции. – LinuxDisciple

+0

Определенно плохой выбор слов с моей стороны. Отредактировано –

+0

Язык - это на самом деле Oracle PL/SQL. – tonyf