Мы с коллегами обсуждали, как лучше защитить себя
от атак XSS, но все еще сохраняют введенные символы HTML
в поля нашего программного обеспечения.
Для меня идеальным решением является принятие данных (отключите ASP .NET
запрос проверки), как пользователь вводит его, выбросить в базу данных
именно так, как они вошли в него. Затем всякий раз, когда вы отображаете данные на
веб, HTML-кодировать его. Проблема с этим подходом состоит в том, что есть
высокая вероятность того, что разработчик где-нибудь когда-нибудь забудет
HTML-кодирование отображения значения где-либо. Бам! XSS уязвимость.
Еще одно решение, которое было предложено, - отключить проверку запросов.
и исключить любые HTML-пользователи, введенные до того, как они будут сохранены в базе данных
используя регулярное выражение. Разработчикам все равно придется кодировать HTML-объекты для отображения,
но так как вы удалили все теги HTML, даже если разработчик забудет, мы
думаю, это будет безопасно. Недостатком является то, что пользователи не могут войти
HTML-теги в описания и поля и вещи, даже если они
явно хотите, или они могут случайно вставить в адрес электронной почты
окруженный <> и регулярное выражение не берет его ... что угодно. Это
винты с данными, и это не идеально.
Другая проблема, которую мы должны помнить, заключается в том, что система была
построен на страхе приверженности какой-либо одной стратегии вокруг этого. А также
в какой-то момент некоторые разработчики написали несколько страниц в HTML кодировать данные перед
попадает в базу данных Так что некоторые данные могут быть уже HTML
закодированы в базе данных, некоторых данных нет - это бардак. Мы не можем
действительно доверять любым данным, которые поступают из базы данных как безопасные для отображения
в браузере.
Мой вопрос: что было бы идеальным решением, если бы вы
создание веб-приложения ASP .NET с нуля, и что было бы хорошо
подходить к нам, учитывая нашу ситуацию?