Это безопасно для передачи данных для входа в систему как простого текста в URL HTTPS?
https://domain.com/ClientLogin?Email=jondoe@gmail.com&Passwd=123password
Обновление: Таким образом, скажем, это не вводится в браузер, но сгенерированной программно и требуемый с запросом POST (не ПОЛУЧИТЬ запрос). Это безопасно?
Это не безопасно для использования этого типа URL в a GET
запрос (т.е. ввод URL в браузер) как требуемый URL будет сохранен в истории браузера и журналах сервера.
Однако это безопасно для представления как a POST
запрос к https://domain.com/ClientLogin
(т.е. представление формы) при передаче учетных данных как части POST body
, начиная с POST body
шифруется и отправляется после устанавливания связи с требуемым URL. Так, действие формы было бы https://domain.com/ClientLogin
и значения полей формы будут переданы в POST body
.
Вот некоторые ссылки, которые помогли мне понять это лучше:
Ответ на Вопрос о StackOverflow: URL https шифруются?
Простое объяснение SSL и HTTPS
Ответы Google: HTTPS - является самой строкой URL, защищают?
Нет. Они не будут видны при передаче, но останутся в:
Если это вообще возможно, используйте POST поверх HTTPS для аутентификации, а затем установите «аутентифицированный "cookie, или использовать HTTP-дайджест-авторизацию через HTTPS, или даже HTTP-аутентификацию через HTTPS - но что бы вы ни делали, не помещайте секретные / конфиденциальные данные в URL-адрес.
Правка: когда я писал «использовать POST», я имел в виду «отправлять конфиденциальные данные через HTTPS в поля POST». Отправка POST http://example.com/ClientLogin?password=hunter2
так же неверна, как и отправка с помощью GET.
TL; DR: Не помещайте пароли в URL. Всегда.
Передача информации для входа в систему в параметрах url не является безопасной, даже с SSL
Передача информации для входа в систему в теле POST с SSL считается безопасной.
Если вы используете SSL, подумайте об аутентификации HTTP Basic. Хотя это ужасно проблематично без SSL, это не хуже, чем POST с учетными данными, это достигает того, что вы хотите, но делает это в соответствии с установленным стандартом, а не пользовательскими именами полей.