Хакеры PHP и массив POST - PullRequest
0 голосов
/ 26 июля 2011

Мне сказали, что это легко, но люди могут просматривать содержимое в массиве $ _POST [], это действительно так просто? Как хакеры это делают и как мне это предотвратить? Стоит ли начинать хранить больше элементов в массиве SESSION []?

POST [] ing Extra Values ​​

Ответы [ 4 ]

5 голосов
/ 27 июля 2011

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

Кроме того, «POST» - это просто тип HTTP-запроса, который означает, что он отправляется в виде простого текста. Не просите клиентов отправлять вам пароли для входа через POST, если вы не заключили HTTP-поток в SSL (используйте https: // и правильно настроили свой веб-сервер), поскольку вы не управляете сетью между клиентом и сервером. Крупные веб-сайты часто этого не делают (по соображениям эффективности), но все онлайн-банки делают это по крайней мере в течение 10 лет.

1 голос
/ 26 июля 2011

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

Люди, которые могут перехватить вашу сеть или выполнить Man во взломе Midle, могут просмотреть это.

С помощью расширения Firefox, такого как Tamper Data, пользователь может изменять данные POST перед отправкой на сервер.

Никогда не вводить данные POST, всегда проверять их на стороне сервера.

0 голосов
/ 27 июля 2011

Относительно MD5:

md5 - это не алгоритм шифрования, это алгоритм хеширования.Это превратит любую строку в 16-байтовый хеш.Теоретически:

  1. Если у вас есть два объекта, a и b, и md5 (a) == md5 (b), то a == b

  2. Если у вас есть md5 (a), вы не можете понять a.

Это неявные предположения при работе с хэшами, хотя на самом деле они никогда не верны - числоодно явно неверно, потому что если вы хешируете 2 ^ 16 + 1 разных строк, то по принципу Pigeonhole должны быть две разные строки с одинаковым хешем.Второе также явно не соответствует действительности, поскольку злоумышленник может искать диапазон значений md5 для хэша, хотя для современных криптографически безопасных хэшей (не md5) это недопустимо.

Приступая к вашему вопросу, вы могли быпросто спросите у клиента хэш md5 пароля пользователя (вам понадобится JavaScript на стороне клиента, чтобы рассчитать это), но это ужасная идея.Если все, что вы ожидаете от пользователя, это md5 ее пароля, то это все, что нужно знать злоумышленнику, и вы отправляете его в виде простого текста.Что вы можете сделать, это отправить клиенту nonce .Это как вызов.Чтобы клиент мог доказать, что знает свой пароль, он может выслать вам хэш одноразового номера и объединить свой пароль.Идея состоит в том, что любой злоумышленник не может ответить на вызов, потому что он знает только одноразовый номер, и после передачи хэша одноразового пароля для него уже слишком поздно, потому что вы его уже получили и не ожидаете ответа на этот одноразовый номер.снова.Свойство 2 гарантирует, что он не сможет извлечь пароль из хеша.

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

0 голосов
/ 27 июля 2011

Из моего комментария на ваш предыдущий вопрос:

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

...