Читаемые данные в строке запроса по HTTP Get - PullRequest
0 голосов
/ 21 мая 2019

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

Строка запроса создается приложением при сбое 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);

Но он теряет сообщения о проверке свойства, например, если это неверный адрес электронной почты.

1 Ответ

0 голосов
/ 23 мая 2019

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

    ModelState.Remove("EmailAddress"); 
    Model.EmailAddress = //new value; 

Моя проблема заключалась в том, что мне нужно было сохранить значение EmailAddress, но зашифровать его до обратной передачи, чтобы значение не отображалось в строке запроса.Вышеприведенное было бесполезно при использовании ModelState.Remove, вы также теряете сообщение проверки (неверный адрес электронной почты и т.Изменил это на

<input type="text" name="EmailAddress"> 

Затем вы можете изменить значение в контроллере перед обратной передачей и сохранить ошибки проверки

Model.EmailAddress = Encrypt(Model.EmailAddress);

Значение обратной передачи зашифровано и отображаются соответствующие сообщения об ошибках проверкипользователю в представлении.Затем сделал несколько простых кодов в представлении для расшифровки адреса Model.EmailAddress.

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