Достаточно ли безопасен этот подход MVC для противодействия XSS, связанному с повторным отображением пользовательского ввода? - PullRequest
1 голос
/ 23 января 2012

Я установил для атрибута ValidateInput значение false для действий, связанных с публикацией комментариев.Я использую html.encoding с помощью этого синтаксиса <%:... %> для повторного отображения комментария

Я разместил следующий код в поле для комментариев, и комментарий действительно был опубликован, как и с тегами сценария, но без предупреждения,Это приемлемо, верно?

<script type="text/javascript"> alert("t"); </script>

Теперь я знаю, что мне все еще нужно следить за атаками, связанными с URL, но достаточно ли безопасен этот подход для повторного отображения ввода?

Редактировать: Комментарий - это единственное место, где я даже допускаю символы вроде «<».Большинство других полей ввода являются буквенно-цифровыми.</p>

1 Ответ

0 голосов
/ 26 января 2012

Да ваш подход безопасен, тот факт, что вы используете <%:, означает, что не имеет значения, что хранится в базе данных, значение будет закодировано при визуализации в браузере, поэтому, если вы посмотрите на html-источник страницы, которая представляет ваш комментарий, вы увидите, что <script... на самом деле &lt;script..., который не будет интерпретироваться браузером как нечто, что должно быть выполнено.

Как примечание: хотя вы всегда должны делать то, что делаете в настоящее время, чтобы убедиться, что эти комментарии никогда не будут отображаться в браузере дословно (без их предварительного кодирования), самый безопасный способ снизить рискникогда не позволять им проходить проверку на стороне сервера.Однако существуют допустимые варианты использования для сохранения кода в вашей базе данных - поэтому это зависит от вашего варианта использования (который вы не предоставили)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...