Безопасность PHP / MySQL - с чего начать? - PullRequest
8 голосов
/ 25 августа 2009

Я нуб PHP / MySQL, который ничего не знает о сетевой безопасности.

Не могли бы вы указать мне некоторые ресурсы, которые помогут в моих знаниях? (Начальный уровень, пожалуйста!)

Ответы [ 5 ]

8 голосов
/ 25 августа 2009

Я предложу две вещи:

  1. Убедитесь, что Register_globals выключен.
  2. Использовать подготовленные заявления .
5 голосов
/ 25 августа 2009

На этот вопрос получен хороший ответ, и он охватывает атаки с использованием MySQL-инъекций (одна из наиболее распространенных проблем). Этот вопрос также хорошо задокументирован и хорошо охватывает атаки XSS (межсайтовый скриптинг).

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

1 голос
/ 25 августа 2009

Если у вас есть время, вы можете взглянуть на слайды, использованные Стефаном Эссером во время его конференции на Голландской конференции PHP несколько месяцев назад, которая называлась "Ускоренный курс по безопасности PHP для начинающих" ».

Есть пара PDF:

Это может быть полезно.

Тогда, не стесняйтесь немного поискать информацию, не относящуюся к PHP: некоторые проблемы безопасности (такие как XSS, SQL-инъекции, CSRF, ...) не являются специфическими для PHP: только технические средства, чтобы их избежать являются конкретными; Таким образом, вы можете найти множество информации на таких сайтах, как Википедия или OWASP веб-сайт

1 голос
/ 25 августа 2009

Крис Шифлетт - специалист по программированию и безопасности на PHP:

1 голос
/ 25 августа 2009

PHP может быть не лучшим началом. Особенно, если вы в значительной степени раскручиваете свой собственный код. Это точно не держит вас за руку с проблемами безопасности. (fd: я бы хотел, чтобы PHP ушел по разным причинам.)

Но некоторые общие правила:

  • Не верь ничему, что приходит извне. Всегда предполагайте, что пользователь - какой-то придурок, пытающийся сломать ваше приложение. Конечно, большинства из них не будет, но в конечном итоге найдется тот, кто есть. То, что вы дали браузеру <select>, содержащий a, b и c, не означает, что вы получите один из них обратно. Javascript не является гарантией чего-либо. Рефереры могут быть легко подделаны. Данные POST могут быть легко подделаны. Текстовые поля могут содержать любые символы, а не только те, которые вы ожидаете.
  • Не копируйте и не вставляйте чужой код в производство, если вы не уверены, как он работает. Вы не представляете, сколько у автора глаз на безопасность. По моему опыту, PHP copypasta, в частности, кажется менее надежным, но чаще используется вслепую.
  • Не доверяйте себе выполнять один и тот же ритуал в десятках разных мест. Да, mysql_real_escape_string() исправит инъекцию SQL, но вы должны помнить, чтобы использовать ее везде. Это создает множество мест, где вы можете ошибиться и забыть свой ритуал побега. Вместо этого используйте подготовленные утверждения, и проблема полностью исчезает . Другой пример: Pylons (платформа Python) фальсифицирует свои шаблоны, поэтому любая переменная экранируется HTML, если вы явно не спросите иначе XSS больше не проблема, и мне никогда не придется беспокоиться о том, чтобы вручную экранировать все, что я печатаю.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...