Почему livehttpheaders показывает мой логин и пароль и как я могу это предотвратить? - PullRequest
0 голосов
/ 24 мая 2009

Я смотрел на плагин livehttpheaders для Firefox и решил проверить мою страницу входа. Я заметил, что параметры, показанные внутри, содержат мой логин и пароль. Например:

username=sarmenhb&password=thepassword&submit=Login

на простом английском.

Я не вижу этого на других сайтах.

Что я могу делать не так? Я вижу это как недостаток безопасности. Страница входа, все, что она делает, проверяет и входит в систему пользователя. Все поля проходят через mysql_real_escape_string (в случае, если это уместно).

Ответы [ 5 ]

8 голосов
/ 24 мая 2009

Информация должна поступать на сервер от клиента каким-то образом. Используйте SSL, если вы беспокоитесь о безопасности.

Даже если вы выполняете хеширование MD5 в Javascript, это не помогает , поскольку отправка хеша на страницу входа в систему тривиальна, и хеш фактически становится паролем. Все вещи представляют собой простой текст, пока они или транспорт не будут зашифрованы. POST переменные, используйте SSL .

Добавить от моего комментария ниже. Вы можете не видеть заголовки для других сайтов, потому что они могут использовать AJAX, метод POST или другой механизм на стороне клиента для аутентификации.

1 голос
/ 24 мая 2009

Вы видите его для своего сайта, а не для других, потому что livehttpheaders показывает URL-адрес для запросов GET, но не показывает содержимое для запросов POST.

Отправка информации для входа в систему через запросы GET - это небольшая дополнительная дыра в безопасности при отправке им POST, поскольку URL-адреса для запросов GET часто регистрируются в разных местах, тогда как почти никто не регистрирует содержимое POST. У всех, кто имеет право просматривать журналы веб-сервера, есть разрешение знать пароль генерального директора?

Однако, как отмечали другие, если вы не используете https: для входа в систему, данные передаются по сети в виде простого текста независимо от того, используете ли вы GET или POST. Это почти всегда плохо.

Тем не менее, в качестве промежуточной меры я бы изменил ваше приложение для отправки имени пользователя и пароля в виде POST, а не GET, чтобы вы в итоге не хранили имена пользователей и пароли в журналах вашего веб-сервера - бесполезно использовать https по сети, если вы делаете что-то, что затем записывает имя пользователя и пароль в недостаточно защищенный файл журнала на сервере.

1 голос
/ 24 мая 2009

Это напоминает мне одно здание в большом городе (я уверен, что есть другие в других местах), где у них есть веб-интерфейс для консьержа здания. Жители могут войти на веб-сайт (через http) и указать (среди прочего), кому разрешено входить в свою квартиру для ремонта и т. Д. В их отсутствие. Я уверен, что все это было запрограммировано чьим-то племянником, «гуру».

Я уверен, что это, скажем так, достаточно хорошо .

0 голосов
/ 05 декабря 2011

HTTP-заголовок также показывает POST-запросы. Post отправляет данные так же, как GET, но единственное отличие состоит в том, что переменные передаются в самом URL в GET, но в POST они добавляются в заголовок HTTP.

Для повышения безопасности используйте шифрование в JS (только пароль или токен + пароль). Но это все еще можно взломать, используя радужные таблицы, скажем, MD5 или любую другую технику хеширования.

SSL - единственный способ обеспечить высокий уровень безопасности.

0 голосов
/ 24 мая 2009

Когда вы используете http и отправляете форму, содержимое формы передается по сети "в открытом виде", как вы видите. Если отправка этой формы включает учетные данные, тогда да, у вас есть проблема с безопасностью.

Среди ваших альтернатив:

  • Используйте https для шифрования беспроводной связи
  • Использовать OpenID для входа в систему, что приводит к тому, что управление учетными данными https отключается от поставщика OpenID пользователя
  • Используйте Javascript на стороне клиента для шифрования учетных данных перед отправкой формы

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

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