Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Передача пароля в POST
 
 автор: xpom   (21.12.2011 в 00:45)   письмо автору
 
 

Когда нужно кодировать пароль в md5? Пользователь вводит пароль в форму наживает отправить и методом POST передаются данные в обработчик, шифровать пароль получится только в обработчике? Не смогут его похитеть передавая его не кодированным после ввода POST-ом в обработчик?

  Ответить  
 
 автор: deimand   (21.12.2011 в 05:48)   письмо автору
 
   для: xpom   (21.12.2011 в 00:45)
 

Если быть точным, то не шифровать а хэшировать. Можно делать хэш пароля перед отправкой на сервер средствами js, немного перед этим подсолив, а на сервере сделать тоже самое и сравнить хэши. В этом случае слушать трафик бесполезно.

гуглить можно по запросу "Частично защищенная авторизация с использованием Javascript MD5 функции"

  Ответить  
 
 автор: Valick   (21.12.2011 в 09:08)   письмо автору
 
   для: deimand   (21.12.2011 в 05:48)
 

что за глупость?
___
во первых
Выводы

Очевидно, схема имеет больше недостатков, чем преимуществ, именно поэтому она до сих пор
не внедрена в ядро Drupal, хотя попытки сделать модуль уже были для Drupal 4.5. Существует модуль
для Drupal 5: CRAM.
Однако, в немного другой форме эта схема используется в PHPLib, PHPMyAdmin, а также на некоторых
сервисах Yahoo(по сведениям с Drupal.org).
По-настоящему защищенную авторизацию может обеспечить только зашифрованное соединение (SSL).

а во вторых вдумайтесь в алгоритм который там приведен, там не защита, а дыра в безопасности
там авторизация происходит по одному лишь логину....

  Ответить  
 
 автор: Ильдар   (21.12.2011 в 10:37)   письмо автору
 
   для: Valick   (21.12.2011 в 09:08)
 

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

  Ответить  
 
 автор: deimand   (21.12.2011 в 11:32)   письмо автору
 
   для: Valick   (21.12.2011 в 09:08)
 

При генерации формы сервер генерирует случайный ключ, который сохраняет в сессию. При каждом запросе формы сервер генерирует новый ключ, что дает обфускацию. Кладем ключ в input.hidden и отдаем клиенту.

На клиенте после нажатия кнопки отправки данных, с содержимым пароля делаем md5JS(input.hidden.value + md5JS(input.password.value)) и эту переменную передаем на сервер вместо пароля.

На сервере по логину достаем из базы хэш пароля, достаем из сессии отправленный с формой ключ, делаем md5(ключ в сессии + хэш пароля) и сравниваем то что получилось на сервере с тем, что пришло с логином. Если результаты идентичны - пользователя авторизовываем, а пароль даже в firebug`e не засветился. Ни что не мешает при этом хранить в базе не хэш пароля, а более защищенную его хэша версию.

Минус подхода только один. Нельзя хранить в базе что либо, что нельзя привести обратно к виду "хэш пароля".

Но будучи админом, можно поставить себе пароль знаков так со 128, что практически полностью исключает возможность его угадать методом перебора. Обычный таймаут на авторизацию в пять минут, в случае трех неверных попыток, не даст взломщику подобрать его за всю свою жизнь. И можно спать спокойно.

P.S. Хорошенько поработав над тем, что хранится в базе вместо пароля, даже успешная sql инъекция не позволит авторизоваться за пользователя. Во всяком случае сразу же. А своевременно узнать о проведенной sql инъекции тоже не особо сложно, даже на обычном хостинге.

  Ответить  
 
 автор: Valick   (21.12.2011 в 13:38)   письмо автору
 
   для: deimand   (21.12.2011 в 11:32)
 

И можно спать спокойно.
а вот хренас два :)
про угон сессии представление имеете?
в чем принципиальная разница перехватить пароль или перехватить SID?
и как я уже писал несколько лет назад от хакерского прокси через который перенаправят ваш траффик ничего не спасет, кроме защищенного соединения (которое и то не спасет, а всего лишь осложнит)
так стоит ли игра свечь?
если вы не "банкомат", то достаточно обычного пароля :)

  Ответить  
 
 автор: deimand   (21.12.2011 в 16:58)   письмо автору
 
   для: Valick   (21.12.2011 в 13:38)
 

А про антиугон сессии слышали? Какая польза от нерабочего SID?

И что еще за прокси? Как это вы можете прослушать трафик между мной и softtime.ru поясните пожалуйста.

  Ответить  
 
 автор: cheops   (21.12.2011 в 17:25)   письмо автору
 
   для: deimand   (21.12.2011 в 16:58)
 

>Как это вы можете прослушать трафик между мной и softtime.ru поясните пожалуйста.
Конкретно ваш трафик, если наш сервер не взломан скорее всего никак, а вот если мы соседи по провайдерам, можно будет попробовать (это уже от раздолбайства администратора провайдера зависит и от того, какое у него оборудование). Сейчас это все стало тяжелее, но пока все еще возможно работать по собственно локальной сети.

  Ответить  
 
 автор: Valick   (21.12.2011 в 19:21)   письмо автору
 
   для: deimand   (21.12.2011 в 16:58)
 

А про антиугон сессии слышали?
ссылку в студию...
Как это вы можете прослушать трафик между мной и softtime.ru поясните пожалуйста.

Когда вы набираете адрес, например, http://www.yandex.ru, ваш компьютер определяет, 
к какому серверу нужно обратиться. В первую очередь он «просматривает» файл hosts (обычно этот файл находится 
в папке C:\WINDOWS\system32\drivers\etc), и, если в нем есть адрес сервера (IP-адрес) 
для указанного вами имени, то используется именно он.
 Если же подходящей записи нет, то нужный адрес сервера запрашивается у вашего провайдера.

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

  Ответить  
 
 автор: cheops   (21.12.2011 в 19:55)   письмо автору
 
   для: Valick   (21.12.2011 в 19:21)
 

Ну hosts сейчас только ленивый не контролирует, исправить его незаметно от пользователя довольно проблематично (если он худо-бедно защищается), хотя да, это один из возможных сценариев. Подрубиться можно и посередине цепочки, подсунув свои IP-адреса вместо настоящих, особенно, если вы в локальной сети того же провайдера.

  Ответить  
 
 автор: Sfinks   (22.12.2011 в 13:41)   письмо автору
 
   для: cheops   (21.12.2011 в 19:55)
 

Ха! Я ленивый =)
Не в тему немного.... Щас обнаружил, что у меня hosts весит 170кб и забит пробелами, переводами строк и переводами типа "127.0.0.1 dnl-20.geo.kaspersky.com", все про обновление каспера и все на локалхост.
Не подскажите кто это сделал:
- злоумышленник
- каспер, когда обнаружило что он нелицензионный
- или это просто нужно касперу каким-то образом?

  Ответить  
 
 автор: cheops   (22.12.2011 в 19:11)   письмо автору
 
   для: Sfinks   (22.12.2011 в 13:41)
 

Я бы думал в сторону касперского (у антивирусов вообще принято по умолчанию считать пользователя недалеким, а компьютер пользователя - свой собственностью)... в нем уже давно разочаровался, не пользуюсь, не могу подтвердить или опровергнуть.

PS DrWeb доживает последние дни на машине - тоже снесу. Такое ощущение, что машины я покупаю, чтобы там всякие программы селились и жили в свое удовольствие - никого проконтролировать толком нельзя.

  Ответить  
 
 автор: deimand   (21.12.2011 в 21:19)   письмо автору
 
   для: Valick   (21.12.2011 в 19:21)
 

Можно начать отталкиваться хотя бы от этого. Можно менять идентификатор сессии хоть за каждое обращение. В этом случае нужно не только получить доступ к идентификатору, но еще и успеть использовать его до смены. Еще есть javascript, localStorage, ajax, а с этим всем можно такой контроль клиента нагородить, что и параноики успокоятся.

Вообще эту тему только здесь раз 20 обсуждали, в каждой теме штук по 50 сообщений не меньше, так что почитать море информации.

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

  Ответить  
 
 автор: Desh   (26.12.2011 в 21:20)   письмо автору
 
   для: deimand   (21.12.2011 в 21:19)
 

Легко угоняется и в любом кафе, где есть wifi, да и вообще где есть wifi, к котороу есть доступ, если без VPN (а это любое кафе). А таким доступом в Интернет пользуется впоне достаточное количество людей.

  Ответить  
 
 автор: cheops   (21.12.2011 в 15:14)   письмо автору
 
   для: xpom   (21.12.2011 в 00:45)
 

>Не смогут его похитеть передавая его не кодированным после ввода POST-ом в обработчик?
Могут. За этим и нужен SSL (https://), который позволяет предотвратить такой сценарий просто шифруя весь трафик.

  Ответить  
 
 автор: Ильдар   (22.12.2011 в 15:23)   письмо автору
 
   для: cheops   (21.12.2011 в 15:14)
 

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

  Ответить  
 
 автор: xpom   (26.12.2011 в 18:59)   письмо автору
 
   для: cheops   (21.12.2011 в 15:14)
 

а как использовать SSL (https://) в POST передачи? Я ни разу с SSL не работал...

  Ответить  
 
 автор: cheops   (26.12.2011 в 19:20)   письмо автору
 
   для: xpom   (26.12.2011 в 18:59)
 

С кодом ничего специального делать не нужно, нужно просто чтобы у вас был настроен SSL и все действия происходили на страницах с адресами https://, а не просто http:// - все остальное сервер и браузер сделают сами.

  Ответить  
 
 автор: xpom   (26.12.2011 в 19:28)   письмо автору
 
   для: cheops   (26.12.2011 в 19:20)
 

если будет настроен SSL весь сайт будет адресам https://?
а где SSL настраивается?

  Ответить  
 
 автор: cheops   (26.12.2011 в 19:32)   письмо автору
 
   для: xpom   (26.12.2011 в 19:28)
 

>если будет настроен SSL весь сайт будет адресам https://?
Обычно его настраивают таким образом, что вы можете использовать совместно https и http. Т.е. захотели нешифрованный трафик (его меньше), подставляете в адрес http://, а все ссылки на авторизации, оплаты и т.п., там где вводятся пароли, делаете https://

>а где SSL настраивается?
На уровне виртуального хоста в Apache (ну или како-то другого Web-браузера). Более того, там несколько подходов, можно даже сделать, чтобы под SSL был выделен отдельный виртуальный хост, независимый от основного.

  Ответить  
 
 автор: xpom   (26.12.2011 в 20:50)   письмо автору
 
   для: cheops   (26.12.2011 в 19:32)
 

Т.е. захотели нешифрованный трафик (его меньше)
а почему нешифрованного трафика меньше?

  Ответить  
 
 автор: cheops   (26.12.2011 в 21:11)   письмо автору
 
   для: xpom   (26.12.2011 в 20:50)
 

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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования