Maison développement back-end tutoriel php Analyse de la méthode de la stratégie de prévention des attaques XSS de Yii2

Analyse de la méthode de la stratégie de prévention des attaques XSS de Yii2

Jun 19, 2018 pm 01:44 PM
xss yii2 攻击防范

Cet article présente principalement la stratégie de prévention des attaques XSS de Yii2. Il analyse plus en détail le principe de l'attaque XSS et la stratégie de prévention correspondante de Yii2. Les amis dans le besoin peuvent s'y référer

Cet article décrit la stratégie de prévention des attaques XSS de Yii2. exemple de stratégies de prévention des attaques Yii2 XSS. 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>

① Marquez les cookies importants comme http uniquement, afin que l'instruction document.cookie en Javascript ne puisse pas obtenir le cookie.
② Uniquement permettre aux utilisateurs de nous saisir les données attendues. 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 <, > pour ", " pour
⑤ Filtrez l'étiquette des événements JavaScript. Par exemple "onclick=", "onfocus" etc.

Prévention XSS dans Yii

<?php echo CHtml::encode($user->name) ?>
Copier après la connexion

Code source de cette méthode :

/**
* 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);
}
Copier après la connexion

La différence entre htmlspecialchars & htmlentities & urlencode :

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
Description du nom de la constante
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 Supprimer silencieusement séquences d'unités de code invalides au lieu de renvoyer une chaîne vide. L'utilisation de cet indicateur est déconseillée car cela peut avoir des implications en matière de sécurité.
ENT_SUBSTITUTE Remplacez les séquences d'unités de code invalides par un caractère de remplacement Unicode U+FFFD (UTF-8) ou FFFD ; sinon) au lieu 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 ; être utile, par exemple, pour garantir la bonne forme des documents XML avec du contenu externe intégré.
ENT_HTML401 Gérer le code comme HTML 4.01
ENT_HTML5 Gérer le code comme HTML 5.

htmlspecialchars.

Convertir les caractères spéciaux en entités HTML

string htmlspecialchars ( 
      string $string 
      [, int $flags = ENT_COMPAT | ENT_HTML401 
      [, string $encoding = ini_get("default_charset") 
      [, bool $double_encode = true ]
    ]
  ] 
)
Copier après la connexion

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.
< (inférieur à) devient < ;
> (supérieur à) devient >

<?php
$new = htmlspecialchars("<a href=&#39;test&#39;>Test</a>", ENT_QUOTES);
echo $new; // <a href=&#39;test&#39;>Test</a>
?>
Copier après la connexion

htmlentities

Convertir toutes les entités applicables caractères aux entités HTML

string htmlentities ( 
      string $string 
      [, int $flags = ENT_COMPAT | ENT_HTML401 
      [, string $encoding = ini_get("default_charset") 
      [, bool $double_encode = true ]
    ]
  ] 
)
Copier après la connexion

<?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);
?>
Copier après la connexion

urlencode

Le codage de l'URL doit être conforme à la spécification 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=%B2%E2%CA%D4%BA%BA%D7%D6&rsv_bp=0&rsv_spt=3&inputT=7477


Donc -appelé le codage d'URL est le suivant : tous les caractères non alphanumériques 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 (+)

Sauf pour -_ Tous les caractères non alphanumériques. les caractères sont remplacés par un signe de pourcentage (%) suivi de deux chiffres hexadécimaux et les espaces sont codés sous forme de signe 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 (+).


<?php
echo &#39;<a href="mycgi?foo=&#39;, urlencode($userinput), &#39;">&#39;;
?>
Copier après la connexion

<?php
$query_string = &#39;foo=&#39; . urlencode($foo) . &#39;&bar=&#39; . urlencode($bar);
echo &#39;<a href="mycgi?&#39; . htmlentities($query_string) . &#39;">&#39;;
?>
Copier après la connexion

Ce qui précède est l'intégralité du contenu de ce article, j'espère qu'il sera utile à l'apprentissage de tout le monde. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Comment implémenter le nettoyage du cache Yii


Comment gérer les liens de routage transférés dans Yii2. 0 Droiture du code de base


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
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)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Protection contre les scripts intersites (XSS) et la falsification de requêtes intersites (CSRF) dans Laravel Protection contre les scripts intersites (XSS) et la falsification de requêtes intersites (CSRF) dans Laravel Aug 13, 2023 pm 04:43 PM

Protection contre les scripts intersites (XSS) et la falsification de requêtes intersites (CSRF) dans Laravel Avec le développement d'Internet, les problèmes de sécurité des réseaux sont devenus de plus en plus graves. Parmi eux, Cross-SiteScripting (XSS) et Cross-SiteRequestForgery (CSRF) sont l'une des méthodes d'attaque les plus courantes. Laravel, en tant que framework de développement PHP populaire, offre aux utilisateurs une variété de mécanismes de sécurité

Comment supprimer jquery dans yii2 Comment supprimer jquery dans yii2 Feb 17, 2023 am 09:55 AM

Comment supprimer jquery de yii2 : 1. Modifiez le fichier AppAsset.php et commentez la valeur "yii\web\YiiAsset" dans la variable $depends ; 2. Modifiez le fichier main.php et ajoutez la configuration comme "'yii" sous le champ "components" \web\JqueryAsset' => ['js' => [],'sourcePath' => null,]," pour supprimer le script jquery.

Comment utiliser Nginx pour se protéger contre les attaques par analyse de port Comment utiliser Nginx pour se protéger contre les attaques par analyse de port Jun 10, 2023 pm 12:18 PM

Dans l’environnement Internet actuel, la sécurité a toujours été l’un des problèmes les plus préoccupants pour les administrateurs réseau et les développeurs de sites Web. Parmi elles, les attaques par analyse de ports constituent une vulnérabilité de sécurité courante. Les attaquants analysent les ports ouverts sur un site Web pour identifier les vulnérabilités potentielles. Afin d'éviter les menaces de sécurité causées par les attaques par analyse de port, de plus en plus d'entreprises et de sites Web choisissent d'utiliser Nginx comme serveur Web. Cet article explique comment utiliser Nginx pour empêcher les attaques par analyse de port. 1. Qu'est-ce qu'une attaque par analyse de port ? L'analyse des ports fait référence à un attaquant utilisant TCP ou U.

Comment se défendre contre les attaques XSS et d'exécution de code à distance en PHP Comment se défendre contre les attaques XSS et d'exécution de code à distance en PHP Jun 30, 2023 am 08:04 AM

Comment utiliser PHP pour se défendre contre les attaques de type cross-site scripting (XSS) et d'exécution de code à distance Introduction : Dans le monde Internet d'aujourd'hui, la sécurité est devenue un problème crucial. Les attaques XSS (cross-site scripting) et d'exécution de code à distance sont deux des vulnérabilités de sécurité les plus courantes. Cet article explorera comment utiliser le langage PHP pour se défendre contre ces deux attaques et fournira plusieurs méthodes et techniques pour protéger votre site Web contre ces attaques. 1. Comprendre les attaques XSS Les attaques XSS font référence aux attaquants qui obtiennent les informations personnelles des utilisateurs en injectant des scripts malveillants sur des sites Web.

Analyse de la technologie de filtrage XSS sécurisé en PHP Analyse de la technologie de filtrage XSS sécurisé en PHP Jun 29, 2023 am 09:49 AM

PHP est un langage de programmation largement utilisé dans le développement de sites Web, mais lorsque vous utilisez PHP pour développer des sites Web, les problèmes de sécurité inquiètent souvent les gens. L’un d’eux est le Cross-SiteScripting (XSS), qui est une vulnérabilité courante en matière de sécurité réseau. Pour résoudre ce problème, PHP fournit des technologies de filtrage XSS sécurisées. Cet article présentera les principes et l'utilisation de la technologie de filtrage XSS sécurisé en PHP. Tout d’abord, nous devons comprendre ce qu’est une attaque XSS. Attaque XSS

Protection de sécurité PHP et prévention des attaques dans le développement de mini-programmes Protection de sécurité PHP et prévention des attaques dans le développement de mini-programmes Jul 07, 2023 am 08:55 AM

Protection de la sécurité PHP et prévention des attaques dans le développement de mini-programmes Avec le développement rapide de l'Internet mobile, les mini-programmes sont devenus une partie importante de la vie des gens. En tant que langage de développement back-end puissant et flexible, PHP est également largement utilisé dans le développement de petits programmes. Cependant, les questions de sécurité ont toujours été un aspect auquel il faut prêter attention lors de l’élaboration des programmes. Cet article se concentrera sur la protection de la sécurité PHP et la prévention des attaques dans le développement de petits programmes, et fournira quelques exemples de code. XSS (cross-site scripting Attack) empêche les attaques XSS lorsque des pirates informatiques injectent des scripts malveillants dans des pages Web

Quelques exercices CTF sélectionnés vous aideront à apprendre le framework yii2 ! Quelques exercices CTF sélectionnés vous aideront à apprendre le framework yii2 ! Feb 23, 2022 am 10:33 AM

Cet article vous présentera le framework yii2, partagera quelques exercices CTF et les utilisera pour apprendre le framework yii2. J'espère qu'il sera utile à tout le monde.

Meilleures pratiques de sécurité pour le développement PHP et Vue.js : prévenir les attaques XSS Meilleures pratiques de sécurité pour le développement PHP et Vue.js : prévenir les attaques XSS Jul 06, 2023 pm 01:37 PM

Meilleures pratiques pour la sécurité du développement PHP et Vue.js : prévenir les attaques XSS Avec le développement rapide d'Internet, les problèmes de sécurité des réseaux deviennent de plus en plus importants. Parmi eux, XSS (cross-site scripting Attack) est un type d'attaque réseau très courant qui vise à exploiter les failles de sécurité du site Web pour injecter du code malveillant aux utilisateurs ou altérer le contenu des pages Web. Dans le développement PHP et Vue.js, il est très important d'adopter certaines bonnes pratiques de sécurité pour prévenir les attaques XSS. Cet article présentera certaines méthodes couramment utilisées pour empêcher les attaques XSS et fournira les codes correspondants.

See all articles