suchen
Heimphp教程PHP开发Analyse der Strategie zur Verhinderung von Yii2 XSS-Angriffen

Dieser Artikel beschreibt die XSS-Angriffspräventionsstrategie von Yii2 anhand von Beispielen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Reparatur von XSS-Schwachstellen

Grundsatz: Den vom Kunden eingegebenen Daten nicht vertrauen
Hinweis: Der Angriffscode ist nicht unbedingt in <script> </script>

① in script> Markieren Sie wichtige Cookies nur als http, damit die document.cookie-Anweisung in Javascript das Cookie nicht abrufen kann.
② Erlauben Sie Benutzern nur die Eingabe Daten, die wir erwarten. 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, , " für
⑤ Filtern Sie JavaScript-Ereignis-Tags. Zum Beispiel „onclick=", „onfocus" und so weiter.

XSS-Prävention in Yii

<?php echo CHtml::encode($user->name) ?>

Quellcode:

/**
* Encodes special characters into HTML entities.
* The [[\yii\base\Application::charset|application charset]] will be used for encoding.
* @param string $content the content to be encoded
* @param boolean $doubleEncode whether to encode HTML entities in `$content`. If false,
* HTML entities in `$content` will not be further encoded.
* @return string the encoded content
* @see decode()
* @see http://www.php.net/manual/en/function.htmlspecialchars.php
*/
public static function encode($content, $doubleEncode = true)
{
  return htmlspecialchars($content, ENT_QUOTES | ENT_SUBSTITUTE, Yii::$app->charset, $doubleEncode);
}

htmlspecialchars & htmlentities & urlencode Der Unterschied zwischen den dreien:

http://php.net/manual/zh /function.htmlspecialchars.php

http://php .net/manual/zh/function.htmlentities.php

http://cn2.php.net/manual/zh/function.urlencode.php

Verfügbare Flag-Konstanten
Beschreibung des Konstantennamens
ENT_COMPAT Wandelt doppelte Anführungszeichen um und lässt einfache Anführungszeichen in Ruhe.

ENT_QUOTES Wandelt sowohl doppelte als auch einfache Anführungszeichen um.

ENT_NOQUOTES Lässt sowohl doppelte als auch einfache Anführungszeichen unkonvertiert.
ENT_IGNORE Verwirft ungültige Codeeinheitensequenzen stillschweigend Von der Verwendung dieses Flags wird abgeraten, da es Auswirkungen auf die Sicherheit haben kann.
ENT_SUBSTITUTE Ersetzen Sie stattdessen ungültige Code-Einheitensequenzen durch ein Unicode-Ersatzzeichen U+ FFFD (UTF-8) oder FFFD; der Rückgabe einer leeren Zeichenfolge.
ENT_DISALLOWED Ersetzen Sie ungültige Codepunkte für den angegebenen Dokumenttyp durch ein Unicode-Ersatzzeichen U+FFFD (UTF-8) oder FFFD; (andernfalls), anstatt sie unverändert zu lassen nützlich, um beispielsweise die Wohlgeformtheit von XML-Dokumenten mit eingebetteten externen Inhalten sicherzustellen.
ENT_HTML401 Behandeln Sie Code als HTML 4.01.
ENT_XML1 Behandeln Sie Code als XML 1.
ENT_XHTML Behandeln Sie Code als XHTML >



Die durchgeführten Übersetzungen sind:

& (kaufmännisches Und) wird zu &

" (doppeltes Anführungszeichen) wird zu ", wenn ENT_NOQUOTES nicht festgelegt ist.

' (einfaches Anführungszeichen). quote) wird nur dann zu ' (oder '), wenn ENT_QUOTES gesetzt ist.

> (größer als) wird zu >

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

htmlentities


Alle anwendbaren Zeichen in HTML-Entitäten konvertieren


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

urlencode

Die URL-Kodierung muss den URL-Spezifikationen 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

string htmlentities (
      string $string
      [, int $flags = ENT_COMPAT | ENT_HTML401
      [, string $encoding = ini_get("default_charset")
      [, bool $double_encode = true ]
    ]
  ]
)
Also Die sogenannte 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
$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);
?>

Ich hoffe, dass dieser Artikel für jedermann beim PHP-Programmdesign basierend auf dem Yii-Framework hilfreich sein wird.

Weitere Artikel zur Analyse der XSS-Angriffspräventionsstrategie von Yii2 finden Sie auf der chinesischen PHP-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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools