PHP-Sicherheit – Remote-Dateirisiko

黄舟
Freigeben: 2023-03-05 21:18:01
Original
1075 Leute haben es durchsucht



Ferndateirisiko

PHP verfügt über eine Konfigurationsoption namens „allow_url_fopen“, die standardmäßig aktiviert ist. Es ermöglicht Ihnen, auf viele Arten von Ressourcen zu verweisen und diese wie lokale Dateien zu behandeln. Sie können beispielsweise den Inhalt (HTML) einer Seite erhalten, indem Sie die URL lesen:

<?php
 
  $contents =
file_get_contents(&#39;http://example.org/&#39;);
 
  ?>
Nach dem Login kopieren


Wie in Kapitel 5 erläutert, können schwerwiegende Schwachstellen entstehen, wenn manipulierte Daten verwendet werden, um auf Dateien in include und require zu verweisen. Tatsächlich halte ich diese Sicherheitslücke für eine der gefährlichsten in PHP-Anwendungen, da sie es einem Angreifer ermöglicht, beliebigen Code auszuführen.

Obwohl etwas weniger schwerwiegend, kann eine ähnliche Sicherheitslücke durch die Verwendung fehlerhafter Daten in einer Standarddateisystemfunktion entstehen:

 <?php
 
  $contents =
file_get_contents($_GET[&#39;filename&#39;]);
 
  ?>
Nach dem Login kopieren


Dieses Beispiel ermöglicht es dem Benutzer, file_get_contents( )-Verhalten, sodass der Inhalt der Remote-Ressource abgerufen wird. Betrachten Sie eine Anfrage wie die folgende:

http://www.php.cn/ … mlle.org%2Fxss.html

Dies führt dazu, dass der Wert von $content beeinträchtigt wird. Da dieser Wert indirekt ermittelt wird, wird diese Tatsache wahrscheinlich ignoriert. Aus diesem Grund behandelt das Defense-in-Depth-Prinzip das Dateisystem als Remote-Datenquelle und den Wert von $content als Eingabe, sodass Ihr Filtermechanismus möglicherweise die Situation ändern kann.

Weil der $content-Wert kontaminiert ist Dies kann zu einer Vielzahl von Sicherheitslücken führen, darunter Cross-Site-Scripting-Schwachstellen und SQL-Injection-Schwachstellen. Hier ist beispielsweise ein Beispiel für eine Cross-Site-Scripting-Schwachstelle:

  <?php
 
  $contents =
file_get_contents($_GET[&#39;filename&#39;]);
 
  echo $contents;
 
  ?>
Nach dem Login kopieren


Die Lösung besteht darin, niemals auf einen Dateinamen mit fehlerhaften Daten zu verweisen. Bestehen Sie einfach darauf, die Eingabe zu filtern, und stellen Sie sicher, dass die Daten gefiltert werden, bevor sie auf einen Dateinamen verweisen:

  <?php
 
  $clean = array();
 
  /* Filter Input ($_GET[&#39;filename&#39;]) */
 
  $contents =
file_get_contents($clean[&#39;filename&#39;]);
 
  ?>
Nach dem Login kopieren


Es gibt zwar keine Garantie dafür, dass die Daten in $content völlig fehlerfrei sind, aber dies gibt eine hinreichende Garantie dafür, dass die Datei, die Sie lesen, genau die Datei ist, die Sie lesen wollten, und nicht eine vom Angreifer angegebene Datei. Um die Sicherheit dieses Prozesses zu erhöhen, müssen Sie $content auch als Eingabe behandeln und vor der Verwendung filtern.

<?php
 
  $clean = array();
  $html = array();
 
  /* Filter Input ($_GET[&#39;filename&#39;]) */
 
  $contents =
file_get_contents($clean[&#39;filename&#39;]);
 
  /* Filter Input ($contents) */
 
  $html[&#39;contents&#39;] =
htmlentities($clean[&#39;contents&#39;], ENT_QUOTES, &#39;UTF-8&#39;);
 
  echo $html[&#39;contents&#39;];
 
  ?>
Nach dem Login kopieren


Der obige Prozess stellt eine leistungsstarke Methode zur Verhinderung verschiedener Angriffe dar und wird für die Verwendung in der tatsächlichen Programmierung empfohlen.

Das Obige ist der Inhalt der PHP-Sicherheits-Remote-Dateirisiken. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.org). php.cn)!

Verwandte Etiketten:
Quelle:php.cn
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!