![]() |
Выбор самого безопастного способа авторизации на портале
При написании системы защиты для нашего движка я с напарником столкнулся в таком вопросе что будет безопаснее:
- авторизация используя протоком SSL - авторизация используя следующий скрипт (код скрипта приведен ниже в урезанном виде) //admin.php PHP код:
PHP код:
|
Ну в принципе через JavaScript вариант тоже безопасный, т.к. передаются хеши вместо значений... Но всё равно проснифав трафик, злоумышленник будет располагать хешами которые передаются на сервер, наверняка найдётся такая пара логин/пароль, которая подойдёт к аккаунту какого-то нерадивого пользователя. Что касется SSL - то тут хоть до усрачки снифай, ничего о внутреннем содержании канала передачи данных ты не узнаешь... То есть, SSL - верх безопасности... А если вы замутите JavaScript авторизацию через SSL так это вообще чума будет...
|
как можно вообще сравнивать протокол SSL и проверку паролей на JS?????? это обсалютно разные вещи.
А если интересует вопрос безопасности, то стоит организовать процесс передачи хэшей пароля посредством ssl, а далее можно, впринципе, получив сессию привязаную к пользователю его ip и т.д. работать по простому http. |
А как это всё на Php сделать? Хочу сделать на сайте возможность регистрации юзеров, для того, чтобы юзеры могли настраивать сайт под свои нужды.
|
SSL луче конечн но возни с ним та и дороговато будет
Вроде как только крутые раскрученные порталы юзают ссл а для середнякового сайта и через js пойдет все зависит насколько конфиденциальны данные |
Как можно передавать хэши паролей вместо самих паролей? Это не шифрование данных, потому что серверный обработчик получает ХЭШ, а не ПАРОЛЬ. А это значит, что система не только не защищает вас от прослушки трафика (т.к. в этом случае авторизация не через пароль, а через его хэш), но еще и разрушает основную концепцию безопасности авторизации в системах ограниченного доступа, т.к., имея доступ к базе данных, злоумышленник уже имеет фактически ПАРОЛЬ, а не ХЭШ и может в этих самых системах авторизовываться по нему (если вы конечно не храните в базе данных хэш от хэша, что вообщем никаким образом не умоляет бредовости идеи передавать вместо пароля его md5 отпечаток).
SSL или самодельная шифрация (можно с помощью яваскрипт, но в этом случае вас ничто не страхует перед хакером, если он случайно найдет алгоритм шифрации в яваскрипт (а он это сделает, зная страницу авторизации) ), впрочем от целенаправленной просллушки канала на конкретно этот логин/пароль вас вообще ничего не спасет. |
Dword, не тупи. Хэш предается вместо пароля лишь для того, что бы сложно было узнать сам пароль, который, коль ты заговорил о КОНЦЕПЦИЯХ БЕЗОПАСНОСТИ, должен быть максимально скрыт и от злоумышлеников и от администрации, в связи с очень частым использованием пользователями одинаковых паролей в разных системах.
по поводу твоего высказывания в адресс Ssl просто нечего сказать.... |
Цитата:
Цитата:
|
Цитата:
Update: madnet удалил свой пост :( |
Dword, до тебя не доходит для чего в данном случае хэшируются пароли.
>если класть туда полученный md5, то это не просто не имеет смысл, но и создает дополнительные угрозы безопасности нука нука, интересно чем же здесь опаснее чем простой пароль ложить в БД? |
Цитата:
|
Цитата:
не хотел тебя радовать раньш времени, но ты тоже можешь понижать/повышать "репутацию" и удалять свои сообщения. Так что давай пожалуйста без оскорблений, а просто говори по теме, если есть что сказать. |
Идея хорошая, можно ещё сделать немного подругому :)
PHP код:
|
На самом деле madnet прав, пароль не должен передаваться на сайт в открытом виде, хотя предложенные способы авторизации тоже могут не прокатить
js - Злоумышленнику не нужен пароль, у него и так есть то, что просит у него сервер, это хэш ssl - Может защитить только если злоумышленник начнёт снифать трафик, после того как браузер принял сертификат, иначе у него и браузера одинаковые шансы получить всю передаваемую информацию. Лучший способ защитить пароль, это получить у клиента логин, достать из базы пароль, сгенерировать блок рандомных данных длиной примерно 256 байт, передать его клиенту, потом каждый из вас зашифрует его хэшем пароля, сервер положит хэшь в сесионную переменную, Клиент обращается к серверу передовая логин: сервер достаёт из базы хэш пароля, генерирует блок рандомных данных длиной примерно 256 байт, возвращает его клиенту, тем временем шифрует его хэшью пароля, вычисляет из результата новую хэш и сохраняет её в сессионную переменную. Клиент получает от сервера блок данных, так-же шифрует его хэшью пароля и так-же вычисляет из него новую хэш, с которой и обращается к серверу: сервер сравнивает полученные хэши и ауторезирует клиента в случае совпадения. При смене пароля нужно снова провести всю эту операцию, за исключением того, что сервер уже знает логин. При таком случае, даже если не использовать ssl и злоумышленник будет снифать весь трафик, ему потребуются сотни лет, чтоб сбрутить хэш от 256байтного блока, зашифрованного хэшью пароля. Недостаток, время выполнения скрипта(ДоС-атаки), выход бан по ип. Новый пароль, при смене пароля можно хэшировать и зашифровать хэшью старого, так как и клиент и сервер её знают. |
Цитата:
|
Цитата:
|
Цитата:
|
Хотя, ведь можно дальше шифровать трафик настоящим паролем, который теперь знает только клиент и сервер? Вообщем супер. А ты сам придумал?
|
Цитата:
Единственное трезвое сообщение из всего топика кстати (2hidden). |
Цитата:
|
Была одна книжка по криптографии, правда я от туда всего пару статеек прочёл, ИМХО(чтение книг вредно сказывается на глазах, читать надо только то, что действительно информативно и поможет в будущем)
Цитата:
Имеется ввиду пакеты длиной больше длины пароля, можно рассматривать способ разбиения страницы на пакеты, перемешивания их и добавления в каждый предыдущий пакет, пароль к следующему. В этом случае о XOR-шифровании не может быть и речь, лучше обмен байта по коду символа пароля. Хотя тоже не очень надёжно и очень не экономично. Если надо защищать не пароль а страницы, то уж лучше ssl использовать. |
Цитата:
Сам пароль будет скрыт от хакера, но впринципе при снифании ничего не мешает: 1)узнать те самые 256 байт от сервера и результат который мы получим от хэширования этих данных хешем паролем, если пароль не сложный и алогоритм хеширования пароля и данных не особо криптостойкий, то есть шанс узнать его, тут решающую роль играет алгоритм хэширования. 2)Что нам мешает перехватить результативный хэш, отправленый клиентом и находящийся в сессии у сервера и обратится с ним к серверу? Только ограничение по IP, но можно предположить, что имея доступ к трафику злоумышним может и подделать IP. |
Цитата:
1) Время, это не 6ти и даже не 16ти-байтовую хэш брутить. 2) Этот способ защищает только от смены пароля и от повторной авторизации и обеспечивает сохранность пароля. Для полной сохранности, можно яваскриптом посылать последовательность действий пользователя и если она не совпадает с серверной, сессия сразу-же прерывается. Кстати, насчёт шифрования данных паролем, только-что придумал; можно на зашифрованный паролем блок данных(тот что использовался при авторизации) наложить несколько заранее известных масок и вычислить от каждой из них хэши(также очень желательно, чтоб длины шэший зависели от самих данных, например усекать их по контрольной сумме данных, а-то снова статистика ;) ), затем этими известными только клиенту и серверу хэшами шифровать получаемые и передаваемые данные. ЗЫ Ладно, для маленького партальчика защита пойдёт :D |
я прочитал про технологию создания сертификатов SSL, там при создании сертификата можно использовать 3 рандомных текстовых файла сжатых gzip тут уж точно невозможно никак угадать какие именно данные были в этих файлах а значит нельзя подделать сертификат.
А если авторизация будет проходить как к примеру на хостинге агава: Доступ по SSL и авторизация на уровне HTTP-аутентификации. Можно ли при такой авторизации злоумышленику получить коды доступа или авторизоватся?! |
Вот последние мысли по данной теме:
При входе пользователя на страницу с формой авторизации создается сессия и рандомом генерируется код Captcha, в базу записываются данные Ip, Session_id, Captcha код, дата, время... Пользователь вводить Логин и пароль нажимает вход. Логин и пароль передаются обработчику уже в формате Md5. Обработчик сравнивает данные, Логина, пароля, скрипта от которого был подан запрос и сравнивает Captcha код который он берет из базы по Session_id. Если хоть один момент не верен то блок по Ip на минуту... Какие будут замечания по данному предложению?! |
Цитата:
|
Я хочу предотвратить кражу хешей паролей и предотвратить любые возможности прослушивания портов...
|
сделай свою ф-ию алгоритма хеширования пароля, к примеру:
PHP код:
PHP код:
|
Помогите настроить SSL?!
Я уже с помощью Open_SSL и сертификаты создал... Поставил WEB сервер (на ОС Windows) Apache + PHP + MySQL + mod_ssl В Апаче прописал следующее: httpd.conf: Код:
LoadModule ssl_module modules/mod_ssl.soКод:
SSLRandomSeed startup builtinне идет загрузка =( |
[off]Дельная была идея сделать wiki для а-чата, а то я себя после этих сообщений полным ламером чувствую. Будет на что ссылаться...
http://slovari.yandex.ru/dict/informatica/article/info/info-490.htm?text=hash [/off] |
Вот нашел статейку интересную
http://www.habrahabr.ru/blog/php/24389.html Полезно почитать... |
Складывается впечатление, что наш народ думать разучился... :-(
Кто запрещает при авторизации взять на вооружение, следующие параметры: - разрешение экрана - версия браузера - локальное время клиента - и т.д. И использовать эти данные как salt в md5... А "куда" вставить и какое количество бит salt'a использовать это по фантазии разработчика... |
Цитата:
|
Цитата:
P.S.: При таком раскладе геморой будет не у тебя, а у того кто будет в таких дебрях разбираться... Мы не ищем лёгких путей!!! |
2FoxMALDER, Не подскажешь нам, необразованным, зачем нам соль при авторизации?
|
Цитата:
P.S.: Я вообще предложил применить в шифровании пароля так называемый salt, а как его альтернативу брать дополнительные данные которые всегда у каждого пользователя будут уникальными... Для начала читай все посты, а потом рассказывай про свою образованость :D |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Цитата:
Ответь на такой вопрос, нахрена тогда пароль в чистом виде шифровать в md5 и передавать на сервак?! Если lookup можно сделать не напрягаясь! Давай перейдём на реальные вещи, для твоего понимания... 1) Открываю страницу авторизации, вижу форму: login, pass, captcha. 2) Ввожу login, pass, captha 3) Отправляю: login, md5(md5(captcha):md5(pass)), captcha Это как пример соли в пароль, можно не именно так... P.S.: Смысл уловил?! :cool: |
добавлю к hidden: мы, кстати говоря, вообще не обязаны передавать этот самый блок длинной 256 в открытом виде;) к прочтению
Код:
http://ru.wikipedia.org/wiki/Алгоритм_Диффи_—_Хеллмана |
| Время: 00:30 |