Внедрение PHP-кода - PullRequest
       1

Внедрение PHP-кода

2 голосов
/ 09 марта 2011

На моем веб-сайте работает скрипт php, который принимает вводимые пользователем данные для отправки по электронной почте. Я очищаю входные данные, удаляя теги и косые черты. Тем не менее, я не использую этот ввод для ввода данных в базу данных или для включения, или exec, или eval, или чего-то в этом роде. Если я не делаю одно из этих рискованных действий, возможно ли, чтобы злоумышленник внедрил исполняемый код php через массивы GET, POST или COOKIES? Я почти уверен, что ответ «нет», но я подумал, что стоит попытаться спросить более опытных людей. :)

Ответы [ 6 ]

1 голос
/ 09 марта 2011

Вы уже позаботились о многих вещах. Но я просто хочу поделиться своим опытом в отношении внедрения кода. Несколько месяцев назад я нашел несколько странных строк кода в файле index.php моего сайта. В то время я просто удалил эти строки, но они вернулись снова через неделю или около того. Затем, после долгих исследований, я обнаружил, что из-за некоторого вредоносного ПО на моем компьютере взломал мой FTP ID / Pwd из моего приложения FTP. Это было изменение кода в index.php. После этого, когда я переустановил ОС на моем компьютере, и проблема была решена. Так что это может быть одной из возможностей внедрения кода.

1 голос
/ 09 марта 2011

Единственное, о чем я могу думать, это о включении register_globals, это будет высокий риск.

например, если у вас был следующий URL с глобальными именами регистров: http://mysite/page/php?_SESSION=0 это заставит PHP перезаписать глобальные переменные сеанса:

var_dump($_SESSION); // = 0

В противном случае вам просто нужно посмотреть на внедрение электронной почты, отличная ссылка, предоставленная @ amosrivera

1 голос
/ 09 марта 2011

Не видя источника, никто не может сказать наверняка, но, вероятно,. Выполнение кода обычно происходит при использовании eval. Также проверьте, используете ли вы include или require для путей из строк, которые могут быть изменены пользователями.

О, и есть инъекция заголовка, которая, вероятно, повлияет на вас http://www.securephpwiki.com/index.php/Email_Injection

1 голос
/ 09 марта 2011

Если вы не используете какой-либо ввод в выражении SQL, не записываете его в файл, не используете eval или exec или не включаете его, нет, невозможно внедрить исполняемый код php.

1 голос
/ 09 марта 2011

Ну, сэр, могу я представить вам Инъекция по электронной почте

Как предотвратить: http://phpsense.com/php/php-mail.html Примечание: если вы используете предоставленный пользователем данные только в теле письма, тогда вы должны быть в безопасности от этого. Но моя рекомендация НИКОГДА доверие вводимые пользователем данные.

0 голосов
/ 09 марта 2011

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

В целом, однако, данные, отправленные пользователем, которые не сохраняются в каком-либо месте на сервере, а затем используются в самом веб-приложении, являются сборщиком мусора в конце запроса (в вашем примере информация отправляется по электронной почте, а затем GCed) , Но инъекция в целом - очень большая проблема, и лучше не думать об этом в общих чертах. Конечно, пользователь не сможет внедрить PHP, но даже простые незащищенные текстовые области, которые публикуют комментарии в веб-приложении, могут открыть вас для клиентской XSS. Лучше заняться практикой.

Санитарная обработка везде, где это возможно, как правило. Я также должен упомянуть HTMLPurifier для фильтрации XSS, если вам это когда-нибудь понадобится. Поскольку ваша форма используется для отправки почты, вы также должны поместить CAPTCHA на вход, чтобы предотвратить автоматическую отправку. Могу ли я также предложить PHPMailer для ваших почтовых команд?

...