imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 07.06.2004, 17:55     # 1
CaptainFlint
Full Member
 
Аватар для CaptainFlint
 
Регистрация: 19.12.2003
Адрес: Москва
Пол: Male
Сообщения: 514

CaptainFlint Гурее всех гурых :-)
CaptainFlint Гурее всех гурых :-)CaptainFlint Гурее всех гурых :-)
Безопасность в Php

Начал изучать PHP, но чую, без посторонней помощи не обойдётся

Есть три варианта работы с административными скриптами:
1. Все они находятся в папке, к которой доступ ограничивается через .htaccess/.htpasswd. Сами скрипты прав доступа не проверяют.
2. .htaccess/.htpasswd отсутствуют, но скрипты требуют сначала ввести логин/пароль, после чего можно будет работать.
3. .htaccess/.htpasswd отсутствуют. Ввод пароля требуется, но одновременно с сеансом. Поясню. Предположим, есть форма для добавления новости на сайт. В варианте 2 потребуется сначала в отдельной формочке ввести логин/пароль, нажать "Вход", а потом спокойно добавлять новости безо всяких проверок. В варианте 3 сразу открывается форма добавления новости, но помимо неё есть ещё дополнительное поле для пароля, и новость будет добавлена только если введённый пароль верен.

Варианты 2 и 3 ещё имеют подварианты:
а) пароль проверяется напрямую (if $pwd == "password")
б) проверка пароля идёт через хэш-код.

Вопрос: какие уязвимости есть во всех этих вариантах и как с ними бороться?
CaptainFlint вне форума  
Старый 07.06.2004, 18:02     # 2
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Цитата:
какие уязвимости есть во всех этих вариантах
кривые руки
Цитата:
как с ними бороться
застрелиться

PS: Юзай 1 способ. Дешево и сердито. Во 2 и 3 если на что и следует обратить внимание, так это на register_globals.
RaZEr вне форума  
Старый 07.06.2004, 20:33     # 3
CaptainFlint
Full Member
 
Аватар для CaptainFlint
 
Регистрация: 19.12.2003
Адрес: Москва
Пол: Male
Сообщения: 514

CaptainFlint Гурее всех гурых :-)
CaptainFlint Гурее всех гурых :-)CaptainFlint Гурее всех гурых :-)
RaZEr
Ok, остановлюсь на первом (он мне сразу понравился как самый простой )
Можно поподробнее насчёт кривых рук? Не исключаю, что относительно PHP мои руки обладают сим печально известным свойством... Какие тут бывают грабли? Можно пару ссылочек подбросить, где подобные ситуации описаны? По Яндексам да Гуглям, конечно, немного пошуровал, но мало чего полезного смог найти.
CaptainFlint вне форума  
Старый 07.06.2004, 20:46     # 4
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Цитата:
Можно пару ссылочек подбросить, где подобные ситуации описаны?
В 1-ом способе оступиться особо негде. Он тем и хорош, что прост и надежен.
RaZEr вне форума  
Старый 07.06.2004, 21:41     # 5
Sheryld
Full Member
 
Регистрация: 29.05.2002
Сообщения: 544

Sheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царствеSheryld Луч света в тёмном царстве
на самом деле все зависит от реализации(2 и 3 вариант). если ты сделаешь нормальное хранение, проверку и сохранение во время сессии логина, пароля и события "logging in", то нет проблем.

можно например так:

храним логин и пассворд в бд(только не в открытом виде).

проверяем логин и пассворд на самой первой странице.
если все совпало, заводим идентификатор юзера(например уникальное число типа int подлинее, например: 44855928592835982582). далее везде, где "ходит" залогинившийся юзер, во всех формах имеется скрытый input с этим числом. при каждом действии проверяется вошел ли он(путем проверки числа из формы и числа из базы), если совпадает, то все ок, если нет, то exit.
при "выходе", число из базы стирается(при следующем заходе оно будет уже другое).
естественно, что скрытый input подставляется динамически(ведь он каждый раз будет разным). а если человек попытается подделать число путем правки html, то у него ничего не выйдет, т.к. он не знает правильного числа в базе.

второй вариант:

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

такой подход менее надежен, но более прост в реализации.

Последний раз редактировалось Sheryld; 07.06.2004 в 21:43.
Sheryld вне форума  
Старый 07.06.2004, 21:47     # 6
ГеныЧ
Junior Member
 
Регистрация: 10.05.2004
Сообщения: 111

ГеныЧ Нуль без палочки
1-й способ хорош только когда пароль правильный (набор букв и цифр не менее 8 символов) .... если пользовать какое нть обычное слово, то ломается перебором по словарю .... так-же он еще ломается снифером (если в одной подсети) ....

Мое имхо: Лучше пользовать как например сделано в vBulletin3 ... при регистрации пароль отправляется не прямум текстом, а захэшированный MD5 с помощью JavaScript .... далее выдается пользователю в куки ID сессии и юзер работает ... после определенного времени неактивности ID сессии на сервере обнуляется ...
ГеныЧ вне форума  
Старый 07.06.2004, 22:45     # 7
CaptainFlint
Full Member
 
Аватар для CaptainFlint
 
Регистрация: 19.12.2003
Адрес: Москва
Пол: Male
Сообщения: 514

CaptainFlint Гурее всех гурых :-)
CaptainFlint Гурее всех гурых :-)CaptainFlint Гурее всех гурых :-)
Sheryld
Примерно понял, спасибо. На будущее запомню.

ГеныЧ
Ну пароль-то я сгенерю... А вот передачей его на сервер я не управляю, вся обработка .htaccess/.htpasswd не мной делается, а по всей видимости, Апачем, то бишь настраивается хостером...
CaptainFlint вне форума  
Старый 08.06.2004, 01:09     # 8
ГеныЧ
Junior Member
 
Регистрация: 10.05.2004
Сообщения: 111

ГеныЧ Нуль без палочки
С помощью .htaccess/.htpasswd логин:пароль на сервер при каждом запросе передается практически напрямую ... кодируется base64, но разве это шифрование? ...

Надежней всего шифрованый канал связи иметь (https если позволяет) ...
ГеныЧ вне форума  
Старый 08.06.2004, 12:08     # 9
CaptainFlint
Full Member
 
Аватар для CaptainFlint
 
Регистрация: 19.12.2003
Адрес: Москва
Пол: Male
Сообщения: 514

CaptainFlint Гурее всех гурых :-)
CaptainFlint Гурее всех гурых :-)CaptainFlint Гурее всех гурых :-)
ГеныЧ
Ну блин, я ж не правительственные секреты пересылать собираюсь! Захотят взломать - взломают. А то ещё страничку новостей по https редактировать... Ещё и шифрование 4096-битным ключом сделать...
CaptainFlint вне форума  
Старый 08.06.2004, 15:18     # 10
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Раз уж мы решили углубиться в полемику абсолютных защит, то вот такая интересная задачка: Есть у нас пароли в базе, которые необходимо высылать на почтовый адрес пользователя в случае необходимости (забыл). Генерировать случайные пароли нельзя, так как злоумышленнику может стать известен e-mail пользователя и он может многократно инициировать такую смену пароля. Как результат нужно высылать текущий пароль, но при этом существует вероятность утечки данных из базы (сервер сломали), которая может подорвать безопасность всей системы. Какие мысли?
RaZEr вне форума  
Старый 08.06.2004, 15:38     # 11
CaptainFlint
Full Member
 
Аватар для CaptainFlint
 
Регистрация: 19.12.2003
Адрес: Москва
Пол: Male
Сообщения: 514

CaptainFlint Гурее всех гурых :-)
CaptainFlint Гурее всех гурых :-)CaptainFlint Гурее всех гурых :-)
RaZEr
Мне кажется, выходом мог бы стать вариант с активацией:
При запросе клиенту шлётся письмо с уникальным сгенерённым числом. Клиент идёт по определённому адресу, вводит это число (или сразу в письме готовая ссылка), и только после этого генерится новый пароль и отсылается клиенту.
CaptainFlint вне форума  
Старый 08.06.2004, 16:23     # 12
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Ага, это мысль.
RaZEr вне форума  
Старый 08.06.2004, 19:37     # 13
VIRT
Guest
 
Сообщения: n/a

Если злоумышленник, пользуется чужим мылом, то какая разница, пароль отослать или ссылку с активацией?
 
Старый 08.06.2004, 20:42     # 14
CaptainFlint
Full Member
 
Аватар для CaptainFlint
 
Регистрация: 19.12.2003
Адрес: Москва
Пол: Male
Сообщения: 514

CaptainFlint Гурее всех гурых :-)
CaptainFlint Гурее всех гурых :-)CaptainFlint Гурее всех гурых :-)
VIRT
Если он пользуется чужим мылом, то он в любом случае получит пароль - сгенерён он, или восстановлен. Имелось в виду, что злоумышленник знает почтовый адрес клиента и может кучу раз делать перегенерацию пароля, что весьма неприятно для клиента...
CaptainFlint вне форума  
Старый 10.06.2004, 12:25     # 15
V0iD
Junior Member
 
Аватар для V0iD
 
Регистрация: 01.06.2003
Адрес: Msk
Пол: Male
Сообщения: 138

V0iD Путь к славе только начался
Контрольный вопрос. Проверенная техника, недаром юзается на львиной доле фри мейл-серваков. После ответа можно и сгенерить новый пасс...
V0iD вне форума  
Старый 10.06.2004, 16:51     # 16
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Цитата:
Проверенная техника, недаром юзается на львиной доле фри мейл-серваков
Потому и используется почтовыми службами, что нельзя выслать подтверждение на e-mail.
RaZEr вне форума  
Старый 11.06.2004, 09:19     # 17
VIRT
Guest
 
Сообщения: n/a

Цитата:
Сообщение от CaptainFlint
VIRT
Если он пользуется чужим мылом, то он в любом случае получит пароль - сгенерён он, или восстановлен. Имелось в виду, что злоумышленник знает почтовый адрес клиента и может кучу раз делать перегенерацию пароля, что весьма неприятно для клиента...
Это называется - защита от баловства Но штука неприятная.
Кстать, сейчас модняво делать ники и логины. Например на форуме ник VIRT, а для авторизаци используется логин йцукен+пароль. Злоумышленнику надо знать логин который, в отличии от ника, нигде не публикуется.
 
Старый 13.06.2004, 17:19     # 18
RaZEr
МОД-Оператор ЭВМ
 
Аватар для RaZEr
 
Регистрация: 18.04.2002
Адрес: Питер
Сообщения: 4 343

RaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех ГуруRaZEr Отец (мать) всех Гуру
Цитата:
Кстать, сейчас модняво делать ники и логины
Я конечно незнаю как сейчас, и особенно не в курсе что модно, а что - нет, но логин отдельно от ника я делал всегда. Делается это не столько в целях безопасности, сколько в целях удобства. У многих ники непростые, далеко непростые, и набирать их при каждой авторизации не оч. удобно, не говоря уже про inline HTTP-auth, где все спец. символы прийдется перевести в коды. А что касаемо борьбы с перебиральщиками, то для этого разумней использовать стандартные средства борьбы с роботами - картиночку с циферками и поле ввода.
RaZEr вне форума  
Старый 18.06.2004, 20:37     # 19
PASHAN
Guest
 
Сообщения: n/a

Я делал очень сложную защиту. Мускулы нету ваще. Всеч ерез конф файл идет + md5

Тоесть пользователь вводит логин и пароль и попадает в свой аккаунт. И данные переходят через ?totot=totototototototototototototototo
И все а в ссчлках стоит просто QUERY_STRING
Получается взломать невозможно, если тока не хакнуть конфиг файл. Естественно в аккаунте стоит проверка isset, if Тоесть простое сравнение. Конечно попотеть пришлось, но работает нормально. Главное права правильные ставить
 
Старый 18.06.2004, 21:02     # 20
Saruman
::VIP::
 
Аватар для Saruman
 
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285

Saruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman Гуру
PASHAN
А от банального брутфорса эта очень сложная защита как защищалась?
Цитата:
?totot=totototototototototototototototo
Это что, поподробнее нельзя? md5-hash данных или session id?
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti
Saruman вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 06:59.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.