recherche
Maisonphp教程PHP开发Analyse de la stratégie de prévention des attaques Yii2 XSS

Cet article décrit la stratégie de prévention des attaques XSS de Yii2 avec des exemples. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Réparation de vulnérabilité XSS

Principe : Ne faites pas confiance aux données saisies par le client
Remarque : Le code d'attaque n'est pas nécessairement dans <script> </script>

① dans script> Marquez les cookies importants comme http uniquement, afin que l'instruction document.cookie en Javascript ne puisse pas obtenir le cookie
② Autoriser uniquement les utilisateurs à saisir le. données que nous attendons. Par exemple : dans la zone de texte Âge, les utilisateurs sont uniquement autorisés à saisir des chiffres. Les caractères autres que les chiffres sont filtrés.
③ Html Encode le traitement des données
④ Filtrez ou supprimez les balises HTML spéciales, telles que : script, iframe, pour >, " for
⑤ Filtrez les balises d'événements JavaScript. Par exemple, "onclick=", "onfocus" et ainsi de suite

Prévention XSS dans Yii

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

Code source :

<.>

/**
* 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 La différence entre les trois :

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

Constantes des indicateurs disponibles

Nom de la constante Description
ENT_COMPAT Convertira les guillemets doubles et laissera les guillemets simples seuls.
ENT_QUOTES Convertira les guillemets doubles et simples.

ENT_NOQUOTES laissera les guillemets doubles et simples non convertis.

ENT_IGNORE Supprime silencieusement les séquences d'unités de code non valides. au lieu de renvoyer une chaîne vide. L'utilisation de cet indicateur est déconseillée car elle peut avoir des implications en matière de sécurité.
ENT_SUBSTITUTE Remplacez les séquences d'unités de code non valides par un caractère de remplacement Unicode U FFFD (UTF-8) ou FFFD (sinon) ; de renvoyer une chaîne vide.
ENT_DISALLOWED Remplacez les points de code invalides pour le type de document donné par un caractère de remplacement Unicode U FFFD (UTF-8) ou FFFD (sinon) au lieu de les laisser tels quels. , par exemple, pour garantir la bonne forme des documents XML avec du contenu externe intégré.
ENT_HTML401 Gère le code comme HTML 4.01.
ENT_XML1 Gère le code comme XML 1.
ENT_XHTML Gère le code comme XHTML 🎜><.>

Les traductions effectuées sont :

& (esperluette) devient &
" (guillemet double) devient " lorsque ENT_NOQUOTES n'est pas défini.
' (guillemet simple) devient ' (ou ') uniquement lorsque ENT_QUOTES est défini.

> (supérieur à) devient >

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

entités HTML

Convertir tous les caractères applicables en entités HTML





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

Encodage d'URL est de se conformer aux spécifications de l'URL. Parce que dans la spécification d'URL standard, le chinois et de nombreux caractères ne sont pas autorisés à apparaître dans l'URL.

Par exemple, recherchez « tester les caractères chinois » dans Baidu. L'URL deviendra

http://www.baidu.com/s?wd=����&rsv_bp=0&rsv_spt=3&inputT=7477

Le soi-disant encodage d'URL est : convertir tous les caractères numériques autres que des lettres seront remplacés par un signe de pourcentage (%) suivi de deux chiffres hexadécimaux, et les espaces seront codés sous forme de signes plus ( )

Tous les caractères non alphanumériques de cette chaîne sauf -_ seront remplacés. avec un signe de pourcentage (%) suivi de deux chiffres hexadécimaux, et les espaces sont codés sous forme de signes plus ( ). Cet encodage est le même que l'encodage des données POST du formulaire WWW et le même encodage que le type de média application/x-www-form-urlencoded. Pour des raisons historiques, ce codage diffère du codage RFC1738 (voir rawurlencode()) dans les espaces de codage sous forme de signes plus ( ).

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);
?>
J'espère que cet article sera utile à la conception de programmes PHP de chacun basés sur le framework Yii.

Pour plus d'articles liés à l'analyse de la stratégie de prévention des attaques XSS de Yii2, veuillez prêter attention au site Web PHP chinois !

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.

Navigateur d'examen sécurisé

Navigateur d'examen sécurisé

Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

Dreamweaver Mac

Dreamweaver Mac

Outils de développement Web visuel