2013-12-13 4 views
1

У меня есть приложение ASP.NET MVC 3, в котором я хочу, чтобы установитьAsp.mvc запрос проверки

requestValidationMode="4.0" 

и все области веб-сайта были обычный пользователь имеет доступ имеют

ValidateInput(true) 

SoI в основном html кодирует весь ввод пользователя и сохраняет его в базе данных. (Сайт не предназначен для работы без JavaScript)

Мой вопрос

Как я должен относиться к SIGNUP, журнал в и изменения пароля функциональности?

Очевидно, что я хочу, чтобы позволить пользователю ввести какой пароль он/она хочет так,

Это нормально, если для пароля поле я HTML закодировать на клиенте, а затем html decode на сервере перед сохранением пароля в базе данных?

Спасибо

+0

Не сохраняйте ничего, что закодировано в базе данных - вы должны кодировать в контексте, который он выводит (например, HTML). В противном случае это будет время головной боли, если вы когда-либо захотите вывести его в другом формате (например, JSON или обычный текст). – SilverlightFox

+0

Сохранение html в вашей базе данных тоже не очень хорошая идея. – Mihai

ответ

1

Учитывая, что пароли не когда-либо могут быть отображены в текстовом виде (или даже сохранены), XSS не должно быть проблемой для паролей.

Вы можете украсить свойство пароля (ями) вашего (вид) модели с [AllowHtml]

Я не могу придумать причину, почему пароль необходимо будет вторит обратно клиенту с сервера, так не нужно делать шаг санитарной очистки Html? (Проверка пароля на клиенте)

Troy Hunt обсуждает это here.

+0

Спасибо за быстрый ответ. Теперь, когда вы упомянули об этом, я могу просто использовать ValidateInput (false) для смены пароля и входа в систему. Единственное, что у меня есть, - это форма регистрации, которая имеет несколько полей (например, имя пользователя - которое размещено на веб-сайте); к сожалению, [AllowHtml] на самом деле не вариант с кодом, который у меня есть (он был написан некоторое время назад, и теперь будет слишком много головной боли) – Mihai

+0

Имена пользователей, вероятно, будут отображаться на страницах, поэтому XSS и Html sanitize проверка должна быть сделана на них. ИМО - это просто пароли, которые могут быть освобождены. – StuartLC

Смежные вопросы