Как проверить данные против xss в nodejs?

Я использую nodejs в качестве своего бэкэнда и храню свои данные в MongoDB. Мне интересно, как я должен проверять входящие данные перед сохранением в базе данных.

Мне нужно проверить как чистые строки, например:

"some xss test"

и объект строк:

{
   "name": "xss name",
   "age": 25
}

Какую библиотеку я должен использовать для своей задачи?


person Erik    schedule 12.05.2014    source источник
comment
Также есть еще один ответ здесь stackoverflow.com/a/31898933/3765109   -  person efkan    schedule 05.04.2017


Ответы (1)


Общепринятой практикой является проверка данных при их выводе, а не при сохранении. При этом можно не волноваться, а вдруг XSS-данные попадут в БД по другим маршрутам?

Но ваш вопрос остается в силе, как программисту проверить, содержит ли что-то XSS или нет. Для выполнения этой работы существует модуль проверки:

var validator = require('validator');

var escaped_string = validator.escape(someString);

Чтобы проверить объект строк, вам, возможно, придется вручную пройтись по списку.


Если вы действительно заинтересованы в выводе html-кода, но беспокоитесь о XSS, вам нужно использовать более сложный валидатор XSS, который постоянно обновляется. Примером может служить Google Caja.

person alandarev    schedule 12.05.2014
comment
Так что мне не нужно беспокоиться о размещении строк xss в моей базе данных? - person Erik; 12.05.2014
comment
@Erik действительно звучит нелогично. Мы могли бы попросить кого-то более опытного разъяснить. Это может зависеть от вашей ситуации, но фильтрация вывода безопаснее — если ваша база данных скомпрометирована, сайт все равно будет отфильтровывать введенные XSS в базу данных. Хотя никто не обидит вас за проверку обоих. - person alandarev; 12.05.2014
comment
@alandarev Я никогда не видел системы, в которой проверка выполнялась исключительно при выводе данных. Проверка обычно происходит при получении данных перед их сохранением. В случае XSS ваша проверка ввода может либо запретить сохранение вредоносного ввода, либо каким-то образом дезинфицировать. - person Martin; 12.05.2014
comment
XSS-фильтрация была удалена из validatorjs (см. ). - person jarmod; 15.04.2020