У нас был тест на проникновение на веб-сайте, и они говорят, что мы не должны передавать читаемые данные в строке запроса (это адрес электронной почты).
Строка запроса создается приложением при сбое ModelState.isValid и возвращает модель в представление с помощью HTTP GET. Нам говорят, что значение EmailAddress должно быть зашифровано (сайт SSL).
Результат проникновения:
GET /Membership/RegisterMe?__RequestVerificationToken=26Oajd6AG17YkHhyZz8-pArBuKEEer7V0b86f0aR_jHXs2JqYRE8NHvhz1zCcKWtQ6eVtxtdkTvC6HjG1ami2d-2CPn8Ieedwc77fIoMB941&EmailAddress=SomeOnesEmail.com
Мы попытались преобразовать значение после его отправки, выполнив следующие действия в контроллере, поэтому, если проверка не удалась, она вернет зашифрованное значение в строке запроса: -
ModelState.Remove("EmailAddress");
model.EmailAddress = Helpers.Encryption.Encrypt(model.EmailAddress);
Но он теряет сообщения о проверке свойства, например, если это неверный адрес электронной почты.