Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Datenfilterung: So verhindern Sie Cross-Site-Scripting-Angriffe

PHP-Datenfilterung: So verhindern Sie Cross-Site-Scripting-Angriffe

王林
王林Original
2023-07-30 18:09:141755Durchsuche

PHP-Datenfilterung: So verhindern Sie Cross-Site-Scripting-Angriffe

Einführung:
In der modernen Netzwerkumgebung ist Cross-Site Scripting (XSS) zu einer der häufigsten und gefährlichsten Sicherheitslücken im Netzwerk geworden. XSS-Angriffe machen sich den unsachgemäßen Umgang der Website mit Benutzereingabedaten zunutze und ermöglichen es Angreifern, bösartigen Skriptcode einzuschleusen und an vertrauliche Benutzerinformationen zu gelangen. In diesem Artikel wird beschrieben, wie Sie Cross-Site-Scripting-Angriffe durch PHP-Datenfilterung verhindern können, und es wird Beispielcode bereitgestellt.

  1. Verstehen Sie die Prinzipien von XSS-Angriffen
    Bevor wir XSS-Angriffe verhindern, müssen wir zunächst verstehen, wie Angreifer diese Schwachstelle für Angriffe ausnutzen. XSS-Angriffe werden hauptsächlich in drei Typen unterteilt: Reflektiertes XSS, gespeichertes XSS und DOM-basiertes XSS. Am häufigsten kommen reflektierte und gespeicherte XSS-Angriffe vor. Der Angreifer fügt bösartigen Skriptcode in die vom Benutzer eingegebenen Daten ein. Wenn der Benutzer die Webseite durchsucht, wird der bösartige Code ausgeführt, um den Zweck des Angriffs zu erreichen.
  2. Verwenden Sie die Funktion htmlspecialchars, um die Ausgabe zu filtern.
    In PHP können Sie die Funktion htmlspecialchars verwenden, um die Ausgabe zu filtern und Sonderzeichen in HTML-Entitäten zu maskieren, um die Ausführung böswilligen Skriptcodes zu verhindern. Hier ist ein Beispielcode:
$userInput = $_GET['input'];
$filteredOutput = htmlspecialchars($userInput);
echo $filteredOutput;

Im obigen Beispiel bedeutet $_GET['input'], vom Benutzer eingegebene Daten aus URL-Parametern abzurufen. Die Funktion htmlspecialchars maskiert die vom Benutzer eingegebenen Daten und gibt sie dann auf der Seite aus. Dadurch wird verhindert, dass Angreifer schädlichen Skriptcode einschleusen.

  1. Verwenden Sie vorbereitete MySQL- oder PDO-Anweisungen, um Datenbankabfragen zu filtern.
    Bei gespeicherten XSS-Angriffen speichert der Angreifer den Schadcode in der Datenbank. Wenn das Hintergrundprogramm die Daten aus der Datenbank liest und auf der Seite ausgibt, wird der Schadcode gespeichert wird ausgeführt. Um diesen Angriff zu verhindern, können vorbereitete MySQL- oder PDO-Anweisungen zum Filtern von Eingaben verwendet werden.

Das Folgende ist ein Beispielcode mit der vorkompilierten MySQL-Anweisung:

$conn = new mysqli($servername, $username, $password, $dbname);
$stmt = $conn->prepare("SELECT username FROM users WHERE id = ?");
$stmt->bind_param("i", $userId);
$stmt->execute();
$stmt->bind_result($username);

while ($stmt->fetch()) {
  echo htmlspecialchars($username);
}

$stmt->close();
$conn->close();

Im obigen Beispiel wird die vorkompilierte MySQL-Anweisung verwendet, um die vom Benutzer eingegebene $id an die Abfrageanweisung zu binden, und die Bindung wird über bind_param angegeben Funktion Der Typ des Parameters. Führen Sie dann die Abfrage aus und verwenden Sie die Funktion bind_result, um die Abfrageergebnisse an die Variable $username zu binden. Verwenden Sie abschließend die Funktion htmlspecialchars, um die Ausgabe zu filtern und die Ausführung von Schadcode zu verhindern.

  1. Verwenden Sie die Funktion filter_var, um Benutzereingaben zu filtern.
    PHP stellt die Funktion filter_var zum Filtern von Benutzereingabedaten bereit. Verschiedene Arten von Benutzereingaben können mithilfe der Funktion filter_var in Kombination mit vordefinierten Filtern wie FILTER_SANITIZE_STRING gefiltert werden.

Das Folgende ist ein Beispielcode, der die Funktion filter_var verwendet, um Benutzereingaben zu filtern:

$userInput = $_POST['input'];
$filteredInput = filter_var($userInput, FILTER_SANITIZE_STRING);
echo $filteredInput;

Im obigen Beispiel wird die Funktion filter_var verwendet, um vom Benutzer eingegebene Daten zu filtern, und der Filter ist als FILTER_SANITIZE_STRING angegeben, was Folgendes bedeutet Es sind nur einfache Zeichenfolgenzeichen zulässig. Dadurch werden einige Sonderzeichen und HTML-Tags herausgefiltert, um XSS-Angriffe zu verhindern.

Fazit:
Um die Sicherheit der Website zu verbessern und Cross-Site-Scripting-Angriffe zu verhindern, müssen wir die vom Benutzer eingegebenen Daten ordnungsgemäß filtern und verarbeiten. In diesem Artikel wird beschrieben, wie Sie die Funktion htmlspecialchars zum Filtern der Ausgabe verwenden, vorkompilierte MySQLi- oder PDO-Anweisungen zum Filtern von Datenbankabfragen verwenden und die Funktion filter_var zum Filtern von Benutzereingaben verwenden. Mit der richtigen Datenfilterung und -verarbeitung können wir Websites wirksam vor der Bedrohung durch XSS-Angriffe schützen.

Referenzmaterialien:

  • [Offizielle PHP-Dokumentation – htmlspecialchars](https://www.php.net/manual/en/function.htmlspecialchars.php)
  • [Offizielle PHP-Dokumentation – mysqli](https:// www.php.net/manual/en/book.mysqli.php)
  • [Offizielle PHP-Dokumentation – PDO](https://www.php.net/manual/en/book.pdo.php)
  • [PHP Offizielle Dokumentation – filter_var](https://www.php.net/manual/en/function.filter-var.php)
  • [OWASP – XSS](https://owasp.org/www-community/attacks/ xss/)

Das obige ist der detaillierte Inhalt vonPHP-Datenfilterung: So verhindern Sie Cross-Site-Scripting-Angriffe. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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