Leser wie Sie helfen, MUO zu unterstützen. Wenn Sie über Links auf unserer Website einen Kauf tätigen, erhalten wir möglicherweise eine Affiliate-Provision. Weiterlesen.

Cross-Site Scripting, allgemein als XSS bekannt, ist eine der gefährlichsten Angriffsmethoden, die von verwendet werden Cyberkriminelle, daher ist es wichtig, dass jeder Entwickler und Sicherheitsforscher weiß, was es ist und wie es geht Angriffe verhindern. Wie können Sie also gegen die XSS-Schwachstelle vorgehen? Sie verwenden HTML, JavaScript oder DOM, um die Daten anzuzeigen, die eine Website vom Benutzer erhält. Einer oder mehrere dieser drei unterschiedlichen Bereiche können zusammenarbeiten.

So verhindern Sie XSS mit HTML

XSS ermöglicht es Angreifern, bösartigen Code einzuschleusen oder Skripte in Webseiten, die auf ahnungslose Benutzer abzielen, die die Website besuchen. Dies könnte persönliche Daten stehlen, Besucher auf eine andere Website umleiten, die vom Cyberkriminellen eingerichtet wurde, oder das Aussehen der Webseite auf andere Weise manipulieren. Aber Sie können dies verhindern; zum Beispiel, indem Sie sie daran hindern, HTML einzufügen.

instagram viewer

Stellen Sie sich vor, Sie haben eine Website mit einem Gästebuch. Angenommen, Ihre Besucher, die dieses Gästebuch verwenden, können hier ihre Namen und Nachrichten schreiben und ihre Nachrichten können öffentlich eingesehen werden. Ein Angreifer, der einen XSS-Test in Ihrem Gästebuch durchführen möchte, verwendet den von Ihnen zugewiesenen Bereich, um eine Nachricht zu schreiben. Dieser Cyberkriminelle führt hier einen JavaScript-Code aus. Ein Angreifer könnte beispielsweise JavaScript-Code verwenden wie:

<Skript>Alarm("Das XSS!")</script>

Damit dies gelingt, muss der Angreifer ein script-Tag verwenden. Andernfalls funktioniert der JavaScript-Code nicht. Sie müssen die

So verhindern Sie XSS mit JavaScript

Die Logik in HTML ist auch gültig in JavaScript. In einigen Anwendungen ist es möglich, die von der Website empfangenen Daten vom Benutzer mit einem JavaScript-Code auszudrucken.

Betrachten Sie diese Codierung:

<p id="drucken"></P>
<Skript>
document.getElementById("prüfen").innerHTML = "";
</script>

Stellen Sie sich vor, eine Website verwendet einen Codeblock wie den obigen. Der Entwickler hat hier ein „p“-Tag namens „print“ verwendet. Wie Sie dem Code entnehmen können, kommt ein Wert aus dem „Such“-Parameter, und der Entwickler möchte diesen eingehenden Wert im „p“-Tag anzeigen. Der Entwickler, der diese Operation durchgeführt hat, wollte die Funktion innerHTML von JavaScript verwenden.

Betrachten wir nun die Situation aus Sicht des Cyberangreifers. In einem solchen Fall führt der Angreifer einen XSS-Test innerhalb des „script“-Tags durch. Dazu muss der Angreifer das Tag nicht neu starten, da bereits ein „script“-Tag verwendet wird. Der Angreifer könnte dann einen Test wie diesen schreiben:

Dateiname.php? suche=a" Alarm("Das XSS!"); f= "

Dieser Code erscheint auf der Website als:

document.getElementById("prüfen").innerHTML = " A" Alarm("Das XSS!"); f="";

Dieser Angriff wäre erfolgreich. Um das Problem besser zu verstehen, betrachten wir eine weitere Beispieltechnik, die ein Angreifer verwenden könnte. Der Hacker hat möglicherweise einen XSS-Test wie den folgenden angewendet:

Dateiname.php? suche=";</script><em>Fatih</em>

So würde es aussehen, wenn es von der Website aus betrachtet wird:

document.getElementById("prüfen").innerHTML = "";</script><em>Fatih</em>";

Dies mag etwas seltsam erscheinen, da der Angreifer das erste "script"-Tag geschlossen hat, indem er hier eine Struktur wie "/script" verwendet. So kann der Angreifer beliebigen JavaScript- und HTML-Code neu starten.

Wenn Sie an diese beiden unterschiedlichen Beispiele denken, scheint der Schutz vor XSS ziemlich einfach zu sein. Die notwendige Vorsichtsmaßnahme wäre, die zu verschlüsseln " Und ' Zeichen, die Sie im ersten Beispiel sehen. Codieren Sie im zweiten Beispiel die Zeichen < Und >.

So verhindern Sie XSS mit DOM

Bei dieser Variante von XSS können die Daten, die die Website vom Benutzer erhält, die Eigenschaft eines DOM-Elements beeinträchtigen. Beispielsweise können die Farbinformationen, die die Website vom Benutzer erhält, die Hintergrundfarbe einer Tabelle oder den gesamten Hintergrund der Seite beeinflussen. Der Benutzer greift also unwissentlich in die Stillayouts des Hauptteils und der Tabelle ein. Der folgende Code ist ein gutes Beispiel dafür:

<Körper bgcolor="<?php echo $_GET['Farbe']; ?>"/>

Dabei verwendet die Website den vom Benutzer erhaltenen „color“-Parameter direkt in der Eigenschaft „bgcolor“ des „body“-Elements. Was also könnte ein Angreifer an dieser Stelle tun? Sie könnten diesen bösartigen Code ausführen:

Dateiname.php? Farbe = rot" laden="Alarm('Das XSS!')

Von der Website aus sieht das so aus:

<Körper bgcolor=" Rot" laden="Alarm('Das XSS!') "/>

Um dies zu verhindern, müsste der Entwickler die " Charakter.

Es gibt jedoch noch ein weiteres wichtiges Element in JavaScript zu beachten. Das folgende Code-Snippet ist ein Beispiel dafür:

<ein href="Javascript: Warnung ('Das XSS!')">

Das bedeutet, dass es möglich ist, JavaScript-Code direkt auszuführen. Eine der besten vorbeugenden Maßnahmen besteht darin, sicherzustellen, dass die Website überprüft, ob es sich bei den Daten, die sie von den Benutzern erhält, um eine echte URL handelt. Die einfachste Methode besteht darin, sicherzustellen, dass Ausdrücke wie „HTTP“ und „ „HTTPS“ (die sichere Version von HTTP) im Anschluss.

Eine Beispielfunktion zur Verhinderung von XSS mit PHP

Sie haben einige Beispiele dafür gesehen, wie Sie eine App oder Website vor XSS-Angriffen schützen können. Sie können die Codeschnipsel in dieser Tabelle mit PHP verwenden:

Codieren Sie in HTML

htmlspecialchars($str, ENT_COMPAT)

Codieren Sie in JavaScript und DOM-Attribut

htmlspecialchars($str, ENT_NOQUOTES)

URL-Prüfung

'/^(((https?)|(\/\/))).*/';

Beachten Sie, dass dies nur Beispiele sind und je nach verwendeter Softwaresprache variieren.

Du kannst Erstellen Sie eine Webanwendung mit PHP und versuchen Sie die Codes, die Sie oben sehen, um sie per SMS zu versenden. Wenn Sie sich fragen, wie Sie all diese Methoden verwenden können, können Sie dem folgenden PHP-Codeblock einige Ideen entnehmen, die auch dann nützlich sein sollten, wenn Sie eine andere Sprache verwenden:

<?php
$daten = $_GET['daten'];

Funktionin_attribut($str){
zurückkehren htmlspecialchars($str, ENT_COMPAT);
// ENT_COMPAT codiert das doppelte Anführungszeichen (").
}

Funktionin_html($str){
$link = '/^(((https?)|(\/\/))).*/';
Wenn(!preg_match($link, $str))
{
zurückkehren "/";
}
zurückkehren $str;
}

$daten = in_attribute($daten);
$daten = in_html($daten);
$data = real_url (Daten);
?>

Schützen Sie Ihre Website vor XSS und mehr

XSS ist ein beliebter Angriffsvektor, der von Hackern verwendet wird. Normalerweise kann ein Pfadwert in der URL, einem beliebigen Feld auf Ihrer Website, in das Daten eingegeben werden können (z. B. Formulare und Kommentarfelder), zum Testen auf eine XSS-Schwachstelle verwendet werden. Aber natürlich gibt es viele verschiedene Methoden, mit denen Cyberkriminelle eine Website angreifen können, insbesondere wenn Sie eine Website haben, die viele Benutzer hat und deren Informationen verbirgt.