Насколько безопасен PHP? - PullRequest
       39

Насколько безопасен PHP?

31 голосов
/ 06 октября 2009

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

Команды типа "include (header.php)" также нуждаются в некоторой защите или они изначально безопасны?

Ответы [ 8 ]

58 голосов
/ 06 октября 2009

Как и любой другой язык, код PHP так же безопасен, как его пишет программист.

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

Найдите книгу, которая охватывает безопасное кодирование PHP.

22 голосов
/ 06 октября 2009

Не доверяйте пользователю.

include "a/literal/file.php";

вполне безопасно

include $someFile;

означает, что вы хотите подумать о том, как установить $ someFile. Если вы используете какие-либо данные, предоставленные вам пользователем, для установки значения $ someFile, лучше очистить его.

9 голосов
/ 14 октября 2009

Цитирую RSnake из поста sla.ckers.org в 2006 году:

Я подумал, что интересно то, что Стефан Эссер ушел из группы реагирования на инциденты в PHP. Не начинать религиозную войну на досках, но интересно, что основатель команды реагирования на безопасность PHP сыт по горло отсутствием безопасности в PHP и в результате ушел. Его сайт в данный момент не работает (поток трафика?): [Blog.php-security.org] Итак, вот фрагмент кеша:

Суббота, 9 декабря. 2006

Прошлой ночью я наконец вышел в отставку из команды PHP Security Response Team, которая изначально была моей идеей несколько лет назад.

Причин для этого много, но самая важная из них заключается в том, что я понял, что любая попытка повысить безопасность PHP изнутри бесполезна. Группа PHP прыгнет в вашу лодку, как только вы попытаетесь обвинить пользователя в проблемах безопасности PHP, но в тот момент, когда вы критикуете безопасность самого PHP, вы становитесь персоной нон-грата. Я перестал считать, что меня называют аморальным предателем за раскрытие дыр в безопасности в PHP или за разработку Suhosin.

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

Автор: Стефан Эссер, PHP, Безопасность в 10: 58

Что ж, как ни страшно это звучит, я очень рад, наконец, получить "реальную сделку" по безопасности PHP. Я всегда был немного осторожен с этим, и будет интересно посмотреть, что Стефан скажет.

источник: http://sla.ckers.org/forum/read.php?2,3976

, который хорошо знаком с проектом Hardened PHP, Suhosin http://www.hardened -php.net / suhosin / и проектом Esser's Month of PHP Bugs http://www.php -security.org /

5 голосов
/ 08 октября 2009

Что касается полей ввода данных, следует позаботиться о атаках с использованием SQL-инъекций, переполнении, некорректных символах и т. Д. Проверьте функции типа filter_var(), mysql_real_escape_string(), pg_escape_string() для начинающих.

5 голосов
/ 06 октября 2009

PHP так же безопасен, как и все. Но не по умолчанию, он опирается на навыки программиста. В отличие от .NET, который по умолчанию помогает с безопасностью.

Включения безопасны, просто будьте осторожны, если пути генерируются с помощью дианмики.

Ниже приведено безвредное (в зависимости от кода в myfile.php)

include("mypath/myfile.php");
4 голосов
/ 07 октября 2009

Согласитесь со всеми здесь - PHP на самом деле не более или менее безопасен сам по себе, чем любой другой язык.

Вы должны глубоко заглянуть в ваш файл php.ini. Вы, вероятно, должны узнать обо всех директивах. Именно здесь многие люди делают ошибки на раннем этапе.

1 голос
/ 07 октября 2009

Чтобы конкретно ответить на вопрос, PHP как язык очень безопасен. Для самого языка рекомендуется использовать последнюю стабильную сборку, чтобы поддерживать безопасность на основе языка. Сопровождающие php - это те, кто создает и исправляет ошибки;)

1 голос
/ 06 октября 2009

Ваш вопрос довольно широкий и общий, но для ответа на конкретный вопрос, который вы высказали:

include (header.php);

относительно безопасно, но

include ($header);

- потенциально опасная дыра в безопасности, в зависимости от того, как был назначен $header и был ли он очищен.

...