Heim >Backend-Entwicklung >PHP-Tutorial >Methodenanalyse der XSS-Angriffspräventionsstrategie von Yii2
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='test'>Test</a>", ENT_QUOTES); echo $new; // <a href='test'>Test</a> ?>
htmlentities
Konvertieren Sie alle anwendbaren Zeichen in HTML-Entitätenstring htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ] ] ] )
<?php $str = "A 'quote' is <b>bold</b>"; // Outputs: A 'quote' is <b>bold</b> echo htmlentities($str); // Outputs: A 'quote' 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 zuhttp://www.baidu.com/s?wd=%B2%E2%CA%D4%BA%BA%D7%D6&rsv_bp=0&rsv_spt=3&inputT=7477
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 '<a href="mycgi?foo=', urlencode($userinput), '">'; ?>
<?php $query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar); echo '<a href="mycgi?' . htmlentities($query_string) . '">'; ?>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!