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

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

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

8 ответов

Решение

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

include "a/literal/file.php";

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

include $someFile;

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

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

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

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

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

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

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

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

Причин для этого много, но самая важная из них заключается в том, что я понял, что любая попытка улучшить безопасность PHP изнутри бесполезна. PHP Group прыгнет в вашу лодку, как только вы попытаетесь обвинить пользователя в проблемах безопасности 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/

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

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

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

include("mypath/myfile.php");

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

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

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

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

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

include (header.php);

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

include ($header);

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

Другие вопросы по тегам