Создаем JQuery фильтр для полей для предотвращения XSS атак

Столкнулся с задачей, когда необходимо фильтровать значение полей ввода, на предмет содержания в них HTML тегов, а также вызовов JScript функций.

В моем конкретном случае, дыра образовалась в инпуте, значение которого обрабатывалось JQuery методом.

Проблему решает написание JQuery фунции, которая может применятся к любому тегу который имеет значение val(). Я вырезаю из него все теги, а также содержимое всех скобок, вместе со скобками.

Реализацию функции привожу ниже:


(function($) {
  $.fn.stripTagsFromVal = function() {
    var regexp = /([<|(]("[^"]*"|'[^']*'|[^'">])*[>|)])/gi;
    this.each(function() { 
        $(this).val(
          $(this).val().replace(regexp,"")
        ); 
      });
    return $(this);
  }
})(jQuery);



Приведу пример использования:
Пусть у нас есть input#test, зададим ему значение:


$("#test").val('< script>alert('XSS attack!')< / script>');



Применим нашу функцию и проверим что получим на выходе:


$("#test").stripTagsFromVal();
console.log('text: ',$("#test").val());



В консоле будет: text: alert, что означает что из всей конструкции осталось только безобидное имя функции alert.
Теги:
фильтр, XSS
Добавлено: 20 Апреля 2018 07:56:54 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...