PDA

Просмотр полной версии : Передача пароля странице через URL



Wolf1994
29.01.2005, 12:35
Опасно ли передавать пароль через URL, типа url.php?pass=x, если страницу с этим паролем загружаю только я. :?:
Если - да, то в чём может быть риск?
Какова тогда альтернативная методика передачи паролей?

Вопрос возник на основании ответа модератора liveinternet:

А вообще паролей не должно быть в URL. Это ваша серьезная
ошибка, URL может быть доступен в сотнях разных мест, а не
только в статистике счетчика.

Absurd
31.01.2005, 11:09
URL обычно можно как-то сосниффить.

Поэтому грамотные люди юзают сессии.
Начинаешь сессию с session_start();
после этого сохраняешь пароль в $_SESSION['pass']

Cессии используют session_id , который передается с каждым запросом.
session_id тоже можно сосниффить.
Поэтому в сессии надо сохранять IP адрес, откуда пришел запрос, и потом проверять, что запрос идет именно от той машины,
которой ты выдал сессию.
$_SESSION['remote_ip']=$_SERVER['REMOTE_ADDR'];
А также
$_SESSION['remote_inner_ip']=$_SERVER['X_FORWARDED_FOR'];

Hup
31.01.2005, 11:53
Можно еще прикрутить md5, чтобы уж наверняка =)))
Но со сниффингом как-то все неинтересно. Кстати как он вообще осуществляется? Я никому не хочу навредить, просто на носу проект, где нужно бороться с подобной гадостью...
Вот, Absurd, уже предложил один способ решения, а как быть, если не привязываться к IP? SSL?

Absurd
31.01.2005, 12:50
Если есть возможность вставлять картинки на атакуемый ресурс и есть доступ к хостингу со скриптами, то элементарно.
Пишешь скрипт, который сохраняет в лог все поля запроса, а в ответ отправляет пользователю gif-файл, содержащий один пиксель прозрачного цвета.
Если возможности вставлять картинки нет, то все равно чего-то можно сообразить в части случаев.

Hup
31.01.2005, 12:57
Absurd, данные выдать за картинку? И что это даст? Что-то толком не вьеду

Wolf1994
31.01.2005, 13:16
Цитата: "Поэтому грамотные люди юзают сессии."

А что если просто использовать cookies?

Absurd
31.01.2005, 13:38
Напиши скрипт на мазафака перле, который сохраняет в лог *весь* запрос от пользователя
и в ответ отправляет такую фиговину:

HTTP/1.0 200[cr/lf]
Content-Length: [длина того что лежит после пустой строки в октетах][cr/lf]
Content-Type: image/gif[cr/lf]
[пустая строка][cr/lf]
[Гиф файл с пикселем прозрачного цвета.]

После этого
1) Воткни его на страницу в куда ты положил скрипт
2) Зайди на эту страницу.
3) Посмотри, чего лежит в логе.

Absurd
31.01.2005, 13:41
А что если просто использовать cookies?
Сессии обычно реализованы через кукизы (зависит от настроек PHP). Только ими пользоваться легче.

AiK
31.01.2005, 14:44
Кстати как он вообще осуществляется?
Не вдаваясь в подробности: берёшь сниффер и ловишь все TCP/IP пакеты :)
Бороться с этим можно только применяя VPN соединение, при котором все пакеты шифруются.
В противном случае, как бы ты не изгалялся, существует возможность, что тебя поимеют. Как вариант - SSL соединение с отдельно взятым сервером. Ты кстати, зря его боишься - тебе только нужно сертификат на сервере установить, а дальше связка браузер - сервер будут выполнять за тебя всю работу, т.е. дополнительно программировать ничего не придётся.

Что же касается передачи пароля через URL, то это неприятно потому, что запрос много где будет отсечивать - начиная с лога у провайдера, и заканчивая логами всевозможных маршрутизаторов, доступ к которым при желании получить можно.

Wolf1994
31.01.2005, 19:28
а насколько опасна передача данных через форму/POST?

AiK
01.02.2005, 15:28
а насколько опасна передача данных через форму/POST?
Почти на столько же, как и через GET. С той лишь разницей, что параметры только на прокси-серверах увидеть можно.
А вот если воспользоваться SSL соединением - то [условно] абсолютно безопасно.