Запрет XSS для форм на стороне клиента и сервера с Node.js - PullRequest
0 голосов
/ 17 февраля 2019

Я не смог найти полное решение по уже заданным вопросам.Хотя злоумышленник может деактивировать JS на стороне клиента, я хотел бы иметь такое же решение в чистом JavaScript для проверки форм.Сервер Node.js.База данных имеет тип NoSQL.У меня есть две формы, которые необходимо проверить:

1) Пользователь подключается через HTTPS, используя форму с адресами электронной почты и паролем.

2) В разделе информационной панели пользователь может создать дополнение в форме, которая содержит:

  • author (входной текст)

  • ключевые слова(ввод текста)

  • WYSIWYG HTML-редактор (то, что вы видите, это то, что вы получаете).Пользователь может выделять жирным шрифтом, изменять цвет текста.Таким образом, выводом будет HTML, который будет храниться в базе данных в виде строки.

  • загрузка изображений, которые будут сохранены в BLOB-контейнере в облаке.

Из того, что я узнал, я могу использовать регулярное выражение:

a) электронная почта

function validateEmail(email) {
    var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(String(email).toLowerCase());}

b) пароль - я могу только проверить, если он имеетминимум 6 символов и имеет тип string.Как я могу проверить, не является ли строка на самом деле HTML или JavaScript?Будет ли это иметь значение для проверки?

c) автор, ключевые слова - вероятно, то же самое, что и пароль (для проверки не HTML или JavaScript).Автор будет общедоступен в дополнении, поэтому его можно использовать в качестве атаки XSS.

d) WYSIWYG HTML-редактор - здесь сложно, потому что на выходе получается HTML.

e) Изображения - онибудет загружаться только из облака.Нужно ли делать какие-либо проверки при загрузке?

Спасибо!

...