Heim >Backend-Entwicklung >PHP-Tutorial >Methodenanalyse der XSS-Angriffspräventionsstrategie von Yii2

Methodenanalyse der XSS-Angriffspräventionsstrategie von Yii2

不言
不言Original
2018-06-19 13:44:012173Durchsuche

In diesem Artikel wird hauptsächlich die XSS-Angriffspräventionsstrategie von Yii2 vorgestellt. Er analysiert das Prinzip des XSS-Angriffs und die entsprechende Präventionsstrategie von Yii2. Freunde in Not können sich darauf beziehen.

Dieser Artikel beschreibt Beispiel für Strategien zur Verhinderung von Yii2-XSS-Angriffen. Teilen Sie es allen als Referenz mit. Die Details lauten wie folgt:

Reparatur von XSS-Schwachstellen

Grundsatz: Vertrauen Sie den vom Kunden eingegebenen Daten nicht
Hinweis : Der Angriffscode ist nicht unbedingt in < ;script>2cacc6d41bbb37262a98f745aa00fbf0

① Markieren Sie wichtige Cookies nur als http, damit die document.cookie-Anweisung in Javascript das Cookie nicht abrufen kann.
② Nur Erlauben Sie Benutzern, die von uns erwarteten Daten einzugeben. Beispiel: Im Textfeld „Alter“ dürfen Benutzer nur Zahlen eingeben. Andere Zeichen als Zahlen werden herausgefiltert.
③ HTML-Kodierungsverarbeitung von Daten
④ Filtern oder entfernen Sie spezielle HTML-Tags, wie zum Beispiel: script, iframe, 069250855fd59919cf5e9fdc16d5dd49 (größer als) wird zu >

<?php
$new = htmlspecialchars("<a href=&#39;test&#39;>Test</a>", ENT_QUOTES);
echo $new; // <a href=&#39;test&#39;>Test</a>
?>

htmlentities

Konvertieren Sie alle anwendbaren Zeichen in HTML-Entitäten

string htmlentities ( 
      string $string 
      [, int $flags = ENT_COMPAT | ENT_HTML401 
      [, string $encoding = ini_get("default_charset") 
      [, bool $double_encode = true ]
    ]
  ] 
)

<?php
$str = "A &#39;quote&#39; is <b>bold</b>";
// Outputs: A &#39;quote&#39; is <b>bold</b>
echo htmlentities($str);
// Outputs: A &#39;quote&#39; is <b>bold</b>
echo htmlentities($str, ENT_QUOTES);
?>

urlencode

URL-Codierung muss der URL-Spezifikation entsprechen. Denn in der Standard-URL-Spezifikation dürfen Chinesisch und viele Zeichen nicht in der URL vorkommen.

Suchen Sie beispielsweise in Baidu nach „chinesische Schriftzeichen testen“. Die URL wird zu

http://www.baidu.com/s?wd=%B2%E2%CA%D4%BA%BA%D7%D6&rsv_bp=0&rsv_spt=3&inputT=7477

Also Die genannte URL-Kodierung lautet: Alle nicht alphanumerischen Zeichen werden durch ein Prozentzeichen (%) gefolgt von zwei hexadezimalen Ziffern ersetzt, und Leerzeichen werden als Pluszeichen (+) kodiert.

Alle nicht alphanumerischen Zeichen Zeichen werden durch ein Prozentzeichen (%) gefolgt von zwei hexadezimalen Ziffern ersetzt und Leerzeichen werden als Pluszeichen (+) kodiert. Diese Kodierung ist dieselbe wie die Kodierung von WWW-Formular-POST-Daten und dieselbe Kodierung wie der Medientyp application/x-www-form-urlencoded. Aus historischen Gründen unterscheidet sich diese Kodierung von der RFC1738-Kodierung (siehe rawurlencode()) darin, dass Leerzeichen als Pluszeichen (+) kodiert werden.

<?php
echo &#39;<a href="mycgi?foo=&#39;, urlencode($userinput), &#39;">&#39;;
?>

<?php
$query_string = &#39;foo=&#39; . urlencode($foo) . &#39;&bar=&#39; . urlencode($bar);
echo &#39;<a href="mycgi?&#39; . htmlentities($query_string) . &#39;">&#39;;
?>

Das Obige ist hoffentlich der gesamte Inhalt dieses Artikels Sie können daraus lernen. Bitte beachten Sie die chinesische PHP-Website für weitere verwandte Inhalte!

Verwandte Empfehlungen:

So implementieren Sie die Yii-Cache-Bereinigung

So gehen Sie mit weitergeleiteten Routing-Links in Yii2 um. 0 Grundlegende Codegerechtigkeit

Das obige ist der detaillierte Inhalt vonMethodenanalyse der XSS-Angriffspräventionsstrategie von Yii2. 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