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


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

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

Author: Sam, 2009-10-06

8 answers

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

include "a/literal/file.php";

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

include $someFile;

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

 22
Author: timdev, 2009-10-06 18:10:04

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

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

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

 58
Author: Steven, 2009-10-07 20:17:32

Чтобы процитировать RSnake из sla.ckers.org сообщение еще в 2006 году:

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

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

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

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

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

Опубликовано Стефаном Эссером на PHP, Безопасность в 10:58

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

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

, Который прекрасно представляет закаленный PHP-проект, Сухосин http://www.hardened-php.net/suhosin / и проект Эссера "Месяц ошибок PHP" http://www.php-security.org/

 9
Author: Cheekysoft, 2009-10-15 08:12:58

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

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

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

include("mypath/myfile.php");
 5
Author: Andrew, 2009-10-06 18:27:47

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

 5
Author: Bill Hoag, 2009-10-07 20:34:17

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

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

 4
Author: thewebguy, 2009-10-07 01:39:44

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

include (header.php);

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

include ($header);

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

 1
Author: Asaph, 2009-10-06 18:11:34

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

 1
Author: Citizen, 2009-10-06 20:38:59