Насколько безопасен HTTP-пост?


является ли сообщение достаточно безопасным для отправки учетных данных для входа?

или SSL-соединение a должны?

14 60

14 ответов:

SSL является обязательным. POST не более безопасен, чем GET, поскольку он также отправляет незашифрованный. SSL будет охватывать всю связь HTTP и шифровать данные HTTP, передаваемые между клиентом и сервером.

<shameless plug>у меня есть блоге это детализирует, как выглядит HTTP-запрос и как запрос GET сравнивается с запросом POST. Для краткости, получить:

GET /?page=123 HTTP/1.1 CRLF
Host: jasonmbaker.wordpress.com CRLF
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 CRLF
Connection: close CRLF

и после:

POST / HTTP/1.1 CRLF
Host: jasonmbaker.wordpress.com CRLF
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 CRLF
Connection: close CRLF
CRLF
page=123

(эти символы не экранируются только символ новой строки)

как вы можете видеть, единственные различия с точки зрения того, как формируется запрос* заключается в том, что запрос POST использует слово POST и данные формы отправляются в теле запроса против URI. Таким образом, используя HTTP POST это безопасность через маскировку. Если вы хотите защитить данные, вы должны использовать SSL.

* обратите внимание, что есть are другие различия.

Это зависит от ваших обстоятельств, сколько будет стоить кому-то перехват учетных данных?

Если это просто вход на сайт программного обеспечения Q+A, то SSL может не понадобиться, если это сайт интернет-банка или вы храните данные кредитной карты, то это так.
Это бизнес, а не техническое решение.

HTTP POST не шифруется, он может быть перехвачен сетевым сниффером, прокси или просочился в журналы сервера с настроенным уровнем ведения журнала. Да, сообщение лучше, чем получить, потому что данные POST не обычно регистрируется прокси или сервером, но это не безопасное. Чтобы защитить пароль или другие конфиденциальные данные, вы должны использовать SSL или шифровать данные перед публикацией. Другой вариант - использовать дайджест-аутентификацию в браузере (см. RFC 2617). Помните, что (домашнее) шифрование недостаточно для предотвращения повторных атак, вы должны объединить nonce и другие данные (например. realm) перед шифрованием (см. RFC 2617 для того, как это делается в Digest Auth).

SSL является обязательным :)

HTTP Post передается в виде обычного текста. Например, загрузите и используйте Fiddler для просмотра HTTP-трафика. Вы можете легко увидеть весь пост там (или через монитор сетевого трафика, как WireShark)

Это не безопасно. Пост можно обнюхать так же легко, как и получить.

нет...Почта не является достаточно безопасным вообще. SSL является обязательным.

POST только эффективно скрывает параметры в строке запроса. Эти параметры все еще могут быть подобраны любым, кто смотрит на трафик между браузером и конечной точкой.

самый безопасный способ-вообще не отправлять учетные данные.

Если вы используете Дайджест-Проверки Подлинности, тогда SSL-это не обязательным.

(NB: я не подразумеваю, что дайджест-аутентификация по HTTP всегда более безопасна, чем использование POST по HTTPS).

сообщение является открытым текстом.

безопасное соединение является обязательным.

вот почему это называется безопасным соединением.

нет, используйте SSL.

с POST значения по-прежнему представляются в виде обычного текста, если не используется SSL.

единственное различие между HTTP GET и HTTP POST-это способ кодирования данных. В обоих случаях он отправляется в виде обычного текста.

для того, чтобы обеспечить любой вид безопасности для учетных данных для входа, HTTPS является обязательным.

вам также не нужен дорогой сертификат для предоставления HTTPS. Есть много поставщиков, которые будут выдавать очень простые сертификаты примерно за $ 20USD. Более дорогие из них включают проверку личности, которая больше беспокоит сайты электронной коммерции.

один запрос POST не является безопасным, потому что все данные "путешествуют" в обычном тексте.

вам нужен SSL, чтобы сделать его безопасным.

данные POST отправляются в виде обычного текста, если вы используете незашифрованное HTTP-соединение. Если это достаточно безопасно, зависит от вашего использования (подсказка: это не).

Если и сервер, и клиентская машина, и все машины между ними являются частью контролируемой, полностью доверенной сети, это может быть нормально.

вне этих очень ограниченных обстоятельств (а иногда и внутри них) аутентификация с помощью простого текста вызывает проблемы.

пожалуйста, смотрите эту замечательную статью:

защита от вредоносных почтовых запросов

https://perishablepress.com/protect-post-requests/