Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.04.2012, 23:25
Интересующийся
Отправить личное сообщение для Diego Посмотреть профиль Найти все сообщения от Diego
 
Регистрация: 06.02.2011
Сообщений: 24

Безопасность в PHP
Уже довольно долго ищу в интернете на эту тему, но в основном пишут статьи про иньекции и xss
Дайте, пожалуйста, ссылки на более полные статьи по безопасности php. Я пишу свою CMS, не хотелось бы чтобы ее взломали в первый же день после запуска сайта
Ответить с цитированием
  #2 (permalink)  
Старый 23.04.2012, 23:42
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

пишите аккуратно, проверяйте переменные, используйте встроенные возможности экранирования переменных, в мускуль не суйте значения как это делают многие "`hehe`='$lala'" пишите так как требуется, не юзайте eval и тогда вас сложно будет сломать.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 23.04.2012, 23:45
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

Принцип один: не доверяйте данным, пришедшим с клиента и будет Вам ЩАСТЬЕ!
Т.е. если ожидается число - intval, строка - хм... ну заслешить кавычки, убрать теги, потереть неожидаемые символы, к примеру $ & #
Не делать eval в скриптах...
Как-то так.
Ответить с цитированием
  #4 (permalink)  
Старый 24.04.2012, 00:53
Интересующийся
Отправить личное сообщение для Diego Посмотреть профиль Найти все сообщения от Diego
 
Регистрация: 06.02.2011
Сообщений: 24

Спасибо за советы!

Если с eval в php всё ясно, то почему многие не советуют использовать eval в javascript? Тут уж в любом случае ясно, какие данные придут в скрипт. Конечно если не допускать совсем очевидных ошибок и вставлять в eval вывод нефильтрованых данных от пользователя.

Еще один совет вспомнил, напишу для тех, кому тоже интересна данная тема: лучше запретить всё и разрешить то что задумано разработчиком. Потому как чаще всего дыры бывают как раз таки из-за того, что разрешено пользователю слишком много.
Ответить с цитированием
  #5 (permalink)  
Старый 24.04.2012, 00:59
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Diego
то почему многие не советуют использовать eval в javascript?
потому что eval в JavaScript безопасен, но многие этого не понимают, услышали проблемы в серверной стороне и боятся юзать его теперь везде, но он не может навредить данным на сервере, это уже проблемы пользователя а не владельца сайта, если юзер ходит по порно сайтам и ловит всякую тварь, то тут никакое переставание использования eval'a не поможет. А для сервера eval критично, так как это может навредить данным на сервере или серверу.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #6 (permalink)  
Старый 24.04.2012, 08:27
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,577

Что значит не использовать eval на сервере? Для пользовательских данных не использовать, для админских использовать.

Diego, твою цмс вряд ли кто то прям так ринется сразу ломать, только если ты очевидно не наплужил с тем же xss. PDO юзаешь?
Насчет безопасности глянь тут.
еще сразу что в голову пришло:
1) тексты пых скриптов пиши без завершающего ?>
2) csrf.
3) Пользовательские формы помечай маркером, что это форма сайта.
4) Прогугли про общую доступность файлов сессий на виртуальных хостингах, соответственно авторизацию продумай.
Ответить с цитированием
  #7 (permalink)  
Старый 24.04.2012, 09:52
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Плюсую про PDO. Все запросы делать только с prepared statements'ами.
Ответить с цитированием
  #8 (permalink)  
Старый 24.04.2012, 13:48
Интересующийся
Отправить личное сообщение для Diego Посмотреть профиль Найти все сообщения от Diego
 
Регистрация: 06.02.2011
Сообщений: 24

PDO не использую, никогда с ним не сталкивался. Посмотрел в вики, через это дополнение проходят все запросы в бд, то есть он автоматически фильтрует все входные данные?

Касательно авторизации - не использую сессии, ставлю две cookie, один с ID пользователя, второй со случайным набором символов, который меняется с каждой авторизацией. Эти символы привязываются к пользователю и его IP, то есть при краже куки злоумышленник всё равно не сможет зайти - его IP отличается от того, что записан в БД. Единственный минус - с изменением IP происходит разлогин, как можно этого избежать? Есть ли другие безопасные способы авторизации?
PS:про этот способ узнал на хабрахабре: http://habrahabr.ru/post/13726/
Ответить с цитированием
  #9 (permalink)  
Старый 24.04.2012, 14:35
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,577

Сообщение от Diego Посмотреть сообщение
PDO не использую, никогда с ним не сталкивался. Посмотрел в вики, через это дополнение проходят все запросы в бд, то есть он автоматически фильтрует все входные данные?
Он не фильтрует, а сначала подготавливает запрос, в который уже вставятся данные, вне зависимости что это за данные. В отличие от "стандартного" подхода, где формируется весь текст запроса перед выполнением и где надо использовать mysql_real_escape_string

Странная у тебя цмс, где ты сессии не используешь.
Ответить с цитированием
  #10 (permalink)  
Старый 24.04.2012, 14:52
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от micscr
1) тексты пых скриптов пиши без завершающего ?>
Уж неужто вычитали где-то что это влияет на безопасность? На возникающие ошибки это конечно влияет когда после закрывающего тега оставишь пробелов, иль еще чего. Но ошибки как правило возникаю одни единственные, невозможность сунуть что-то в заголовки. А на безопасность это ну ни как не влияет, просто нужно юзать нормальные редакторы и быть внимательнее и не разводить мусор в коде. А еще не забывать о том что многие редакторы любят совать BOM который тоже иногда приводит к ошибкам.

Сообщение от micscr
Странная у тебя цмс, где ты сессии не используешь.
да я о том же... чем стандартные PHP'шные сессии не угодили, понять сложно.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Связь между страницами с javascript и php ... и обратно okrip25 AJAX и COMET 7 09.01.2012 14:43
Запуск выполнения PHP при нажатие на кнопку??? Abibas220 Общие вопросы Javascript 1 05.01.2011 12:05
Как передать картинку из javascript в php KIVagant AJAX и COMET 3 12.05.2010 11:54
javascript и php (Вопрос) Гауляйтер Общие вопросы Javascript 3 06.05.2009 09:23