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

Обсуждение серверного программирования.

Модераторы: Duncon, Yurich

Wolf1994
Сообщения: 3
Зарегистрирован: 29 янв 2005, 12:24
Контактная информация:

29 янв 2005, 12:35

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

Вопрос возник на основании ответа модератора liveinternet:
А вообще паролей не должно быть в URL. Это ваша серьезная
ошибка, URL может быть доступен в сотнях разных мест, а не
только в статистике счетчика.
http://www.wolf-ware.ru - архив бесплатных программ
Absurd
Сообщения: 1213
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

31 янв 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'];
2B OR NOT(2B) = FF
Hup
Сообщения: 207
Зарегистрирован: 05 мар 2004, 05:31
Откуда: Владивосток
Контактная информация:

31 янв 2005, 11:53

Можно еще прикрутить md5, чтобы уж наверняка =)))
Но со сниффингом как-то все неинтересно. Кстати как он вообще осуществляется? Я никому не хочу навредить, просто на носу проект, где нужно бороться с подобной гадостью...
Вот, Absurd, уже предложил один способ решения, а как быть, если не привязываться к IP? SSL?
Усложнять - легко, упрощать - сложно
Absurd
Сообщения: 1213
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

31 янв 2005, 12:50

Если есть возможность вставлять картинки на атакуемый ресурс и есть доступ к хостингу со скриптами, то элементарно.
Пишешь скрипт, который сохраняет в лог все поля запроса, а в ответ отправляет пользователю gif-файл, содержащий один пиксель прозрачного цвета.
Если возможности вставлять картинки нет, то все равно чего-то можно сообразить в части случаев.
2B OR NOT(2B) = FF
Hup
Сообщения: 207
Зарегистрирован: 05 мар 2004, 05:31
Откуда: Владивосток
Контактная информация:

31 янв 2005, 12:57

Absurd, данные выдать за картинку? И что это даст? Что-то толком не вьеду
Усложнять - легко, упрощать - сложно
Wolf1994
Сообщения: 3
Зарегистрирован: 29 янв 2005, 12:24
Контактная информация:

31 янв 2005, 13:16

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

А что если просто использовать cookies?
http://www.wolf-ware.ru - архив бесплатных программ
Absurd
Сообщения: 1213
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

31 янв 2005, 13:38

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

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

После этого
1) Воткни его на страницу в [img]куда%20ты%20положил%20скрипт[/img]
2) Зайди на эту страницу.
3) Посмотри, чего лежит в логе.
2B OR NOT(2B) = FF
Absurd
Сообщения: 1213
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

31 янв 2005, 13:41

А что если просто использовать cookies?
Сессии обычно реализованы через кукизы (зависит от настроек PHP). Только ими пользоваться легче.
2B OR NOT(2B) = FF
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

31 янв 2005, 14:44

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

Что же касается передачи пароля через URL, то это неприятно потому, что запрос много где будет отсечивать - начиная с лога у провайдера, и заканчивая логами всевозможных маршрутизаторов, доступ к которым при желании получить можно.
Даже самый дурацкий замысел можно воплотить мастерски
Wolf1994
Сообщения: 3
Зарегистрирован: 29 янв 2005, 12:24
Контактная информация:

31 янв 2005, 19:28

а насколько опасна передача данных через форму/POST?
http://www.wolf-ware.ru - архив бесплатных программ
Ответить