23.04.2012, 23:25
|
Интересующийся
|
|
Регистрация: 06.02.2011
Сообщений: 24
|
|
Безопасность в PHP
Уже довольно долго ищу в интернете на эту тему, но в основном пишут статьи про иньекции и xss
Дайте, пожалуйста, ссылки на более полные статьи по безопасности php. Я пишу свою CMS, не хотелось бы чтобы ее взломали в первый же день после запуска сайта
|
|
23.04.2012, 23:42
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
пишите аккуратно, проверяйте переменные, используйте встроенные возможности экранирования переменных, в мускуль не суйте значения как это делают многие "`hehe`='$lala'" пишите так как требуется, не юзайте eval и тогда вас сложно будет сломать.
|
|
23.04.2012, 23:45
|
|
Сам по себе
|
|
Регистрация: 09.06.2009
Сообщений: 963
|
|
Принцип один: не доверяйте данным, пришедшим с клиента и будет Вам ЩАСТЬЕ!
Т.е. если ожидается число - intval, строка - хм... ну заслешить кавычки, убрать теги, потереть неожидаемые символы, к примеру $ & #
Не делать eval в скриптах...
Как-то так.
|
|
24.04.2012, 00:53
|
Интересующийся
|
|
Регистрация: 06.02.2011
Сообщений: 24
|
|
Спасибо за советы!
Если с eval в php всё ясно, то почему многие не советуют использовать eval в javascript? Тут уж в любом случае ясно, какие данные придут в скрипт. Конечно если не допускать совсем очевидных ошибок и вставлять в eval вывод нефильтрованых данных от пользователя.
Еще один совет вспомнил, напишу для тех, кому тоже интересна данная тема: лучше запретить всё и разрешить то что задумано разработчиком. Потому как чаще всего дыры бывают как раз таки из-за того, что разрешено пользователю слишком много.
|
|
24.04.2012, 00:59
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от Diego
|
то почему многие не советуют использовать eval в javascript?
|
потому что eval в JavaScript безопасен, но многие этого не понимают, услышали проблемы в серверной стороне и боятся юзать его теперь везде, но он не может навредить данным на сервере, это уже проблемы пользователя а не владельца сайта, если юзер ходит по порно сайтам и ловит всякую тварь, то тут никакое переставание использования eval'a не поможет. А для сервера eval критично, так как это может навредить данным на сервере или серверу.
|
|
24.04.2012, 08:27
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,578
|
|
Что значит не использовать eval на сервере? Для пользовательских данных не использовать, для админских использовать.
Diego, твою цмс вряд ли кто то прям так ринется сразу ломать, только если ты очевидно не наплужил с тем же xss. PDO юзаешь?
Насчет безопасности глянь тут.
еще сразу что в голову пришло:
1) тексты пых скриптов пиши без завершающего ?>
2) csrf.
3) Пользовательские формы помечай маркером, что это форма сайта.
4) Прогугли про общую доступность файлов сессий на виртуальных хостингах, соответственно авторизацию продумай.
|
|
24.04.2012, 09:52
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Плюсую про PDO. Все запросы делать только с prepared statements'ами.
|
|
24.04.2012, 13:48
|
Интересующийся
|
|
Регистрация: 06.02.2011
Сообщений: 24
|
|
PDO не использую, никогда с ним не сталкивался. Посмотрел в вики, через это дополнение проходят все запросы в бд, то есть он автоматически фильтрует все входные данные?
Касательно авторизации - не использую сессии, ставлю две cookie, один с ID пользователя, второй со случайным набором символов, который меняется с каждой авторизацией. Эти символы привязываются к пользователю и его IP, то есть при краже куки злоумышленник всё равно не сможет зайти - его IP отличается от того, что записан в БД. Единственный минус - с изменением IP происходит разлогин, как можно этого избежать? Есть ли другие безопасные способы авторизации?
PS:про этот способ узнал на хабрахабре: http://habrahabr.ru/post/13726/
|
|
24.04.2012, 14:35
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,578
|
|
Сообщение от Diego
|
PDO не использую, никогда с ним не сталкивался. Посмотрел в вики, через это дополнение проходят все запросы в бд, то есть он автоматически фильтрует все входные данные?
|
Он не фильтрует, а сначала подготавливает запрос, в который уже вставятся данные, вне зависимости что это за данные. В отличие от "стандартного" подхода, где формируется весь текст запроса перед выполнением и где надо использовать mysql_real_escape_string
Странная у тебя цмс, где ты сессии не используешь.
|
|
24.04.2012, 14:52
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от micscr
|
1) тексты пых скриптов пиши без завершающего ?>
|
Уж неужто вычитали где-то что это влияет на безопасность? На возникающие ошибки это конечно влияет когда после закрывающего тега оставишь пробелов, иль еще чего. Но ошибки как правило возникаю одни единственные, невозможность сунуть что-то в заголовки. А на безопасность это ну ни как не влияет, просто нужно юзать нормальные редакторы и быть внимательнее и не разводить мусор в коде. А еще не забывать о том что многие редакторы любят совать BOM который тоже иногда приводит к ошибкам.
Сообщение от micscr
|
Странная у тебя цмс, где ты сессии не используешь.
|
да я о том же... чем стандартные PHP'шные сессии не угодили, понять сложно.
|
|
|
|