Avec le développement d'Internet, les différentes applications WEB sont devenues de plus en plus complexes pour répondre aux différents besoins des utilisateurs, mais avec elles s'ajoutent diverses problématiques de sécurité des réseaux. En tant qu'industrie de développement front-end, nous ne pouvons pas échapper à ce problème. Aujourd’hui, je vais donc parler brièvement de la sécurité frontale WEB et de la manière de la prévenir.
Tout d'abord, quelles sont les formes d'attaques frontales et comment pouvons-nous les prévenir ?
1. >XSS est une vulnérabilité de sécurité informatique qui apparaît souvent dans les applications Web et qui permet aux utilisateurs Web malveillants d'insérer du code dans des pages accessibles aux autres utilisateurs. Par exemple, ces codes incluent du code HTML et des scripts côté client. Les attaquants utilisent les vulnérabilités XSS pour contourner le contrôle d'accès - comme la même politique d'origine (
same
). Ce type de vulnérabilité est devenu bien connu car il est utilisé par les pirates informatiques pour écrire des attaques de phishing (origin
) plus nuisibles. policy
Phishing
Les dangers des attaques XSS incluent :
1. Voler divers comptes d'utilisateurs, tels que les comptes de connexion de machine, les comptes bancaires en ligne d'utilisateurs et divers comptes d'administrateur
2. Contrôler Données d'entreprise, y compris la possibilité de lire, falsifier, ajouter et supprimer des données d'entreprise sensibles
3. Vol d'informations d'entreprise importantes ayant une valeur commerciale
4. Transferts illégaux
5. Forcer à envoyer des emails
6. Cheval suspendu au site Web
7. Contrôler la machine de la victime pour lancer des attaques sur d'autres sites Web
Manifestations spécifiques des attaques XSS :
1. Injection de code JavaScript
Voici la page de codes :
La fonction de ce code est d'insérer la chaîne dans le premier zone de saisie, Sortie vers la deuxième zone de saisie, nous entrons 1, puis la valeur dans la deuxième entrée est 1. Ci-dessous se trouvent des captures d'écran de la page et du code source (ici j'entre le code suivant pour tester)
<SCRIPT>alert('xss')</SCRIPT>
Vous pouvez évidemment voir qu'il n'y a pas de boîte de dialogue pop-up. Vous vous demandez peut-être pourquoi il n'y a pas de fenêtre pop-up. Jetez un œil à la source. code
Nous voyons que la chaîne que nous avons entrée est sortie vers l'attribut value dans la balise d'entrée à la ligne 15, et est affichée comme valeur dans value, donc il n'y a pas À ce stade, que devons-nous faire ? Les gens intelligents ont découvert que vous pouvez ajouter un "> devant
<SCRIPT>alert('xss')</SCRIPT>
pour fermer la balise d'entrée. Le résultat que vous devriez donc obtenir est <🎜. >
La fenêtre apparaît avec succès Lorsque nous regardons la page à ce moment,
nous voyons une deuxième zone de saisie. suivi d'une chaîne ">. Pourquoi cela se produit-il ? Jetons un coup d'œil au code source
Solution : À l'heure actuelle, la méthode de prévention la plus simple consiste à échapper à tous les fronts -end données de sortie Sûr, bien qu'il soit montré qu'il existe une balise de script, en fait, les crochets gauche et droit (><) de la balise de script sont échappés dans des entités de caractères HTML, ils ne seront donc pas analysés. en tant que balises, mais lorsqu'ils sont réellement affichés, ces deux crochets angulaires peuvent toujours être affichés normalement.
2. Utilisation de append Dans la section précédente, nous avons empêché les crochets gauche et droit de la balise de script, mais les pirates intelligents ont quand même trouvé un bon moyen de la déchiffrer. cela, donnez simplement L'attribution d'un morceau de js à innerHTML ne peut pas être exécutée. Par exemple,<br/>
En utilisant la combinaison de ces deux types de connaissances, nous pouvons conclure que le site Web utilise l'ajout pour effectuer des opérations dom. S'il s'agit d'un champ que nous pouvons décider d'ajouter, alors nous pouvons masquer les crochets gauche et droit en utilisant Unicode. code, comme ceci-- "u003cscriptu003ealert('xss');
". Lors de la prochaine évasion, le
3. Réutilisation de la balise img
La balise img appellera une erreur sur l'élément lors de l'événement d'échec du chargement de l'image. C'est ainsi que nous pouvons attaquer.
Mais et si nous écrivions l'adresse de cette image différemment ?
Le code source à ce moment a changé Car --src est vide, mais lorsqu'une erreur se produit, le code injecté est exécuté. Lorsque nous actualisons la page d'affichage, nous constatons que l'injection de code a réussi et doit continuer à être échappée.
2. Attaque CSRF
Qu'est-ce qu'une attaque CSRF ?
CSRF (Cross
-site
request
forgery
Cross -site Request faux, également connu sous le nom de "One
Click
Attack
" ou Session
Riding
, souvent abrégé en CSRF ou XSRF, est une utilisation malveillante du site Web. Il s'agit en fait d'un comportement de soumission sur le site Web. site Web. , utilisé par les pirates, les opérations que vous effectuez lors de la visite du site Web du pirate seront effectuées sur d'autres sites Web (comme le site Web de la banque en ligne que vous utilisez)
1. Utilisez les publications de manière raisonnable. 🎜>
Habituellement, afin d'éviter des ennuis, nous collectons certaines données qui doivent être soumises dans une requête get. Comme tout le monde le sait, cela viole non seulement les normes HTTP, mais peut également être utilisé par des pirates.
Par exemple, dans le site Web que vous avez développé, il y a une opération d'achat de biens. Vous l'avez développé comme ceci :Dans ce cas, l'utilisateur n'a besoin de visiter le site Web du hacker qu'une seule fois, ce qui est en fait équivalent à être sur votre site Web, l'opération a été effectuée une fois. Cependant, l'utilisateur ne l'a pas remarqué Par conséquent, notre développement quotidien doit toujours suivre l'activité de soumission et suivre strictement la demande de publication, sans parler de l'utilisation. jsonp pour rendre l'interface de soumission très dangereuse. 2. Mise à niveau de l'attaque XSRFSi vous utilisez des requêtes de publication pour gérer des affaires clés, il existe toujours un moyen de le déchiffrer. comme suit :
Le code du hacker est le suivant :
ne porte pas. le jeton généré par chaque session de ce site, donc la soumission échoue.
Le formulaire Web de ce site portera automatiquement le jeton généré par ce siteSi vous utilisez à nouveau la page Web de ce site pour soumettre, vous pouvez soumettez-le via
Bien sûr, les éléments ci-dessus ne sont que des exemples. La génération de jeton spécifique doit changer en fonction de la session et de l'ID utilisateur. Si vous pensez que votre site Web doit également ajouter un jeton, veuillez contacter Baidu pour plus d'informations. étude approfondie.3. Attaque de piratage de réseau
Souvent, notre site Web n'accède pas directement à notre serveur, mais passe par de nombreuses couches de proxys. Si, sur un certain lien, les données sont interceptées par des pirates de l'air au niveau de la couche proxy intermédiaire, ils peuvent les obtenir. mots de passe pour les utilisateurs de votre site Web. Par exemple, nos utilisateurs se connectent souvent à un wifi étrange dans divers restaurants. Si ce wifi est un hotspot wifi établi par un pirate informatique, alors le pirate informatique peut accéder à toutes les données envoyées et reçues par l'utilisateur. Ici, il est recommandé aux webmasters d'utiliser https pour le cryptage sur leurs sites Web. De cette façon, même si les données du site Web peuvent être obtenues, les pirates ne pourront pas les déverrouiller.
Si votre site Web n'a pas été crypté par https, alors dans la partie soumission du formulaire, il est préférable d'utiliser un cryptage asymétrique, c'est-à-dire un cryptage côté client, qui ne peut être déchiffré que par le serveur. De cette façon, le pirate de l’air du milieu ne pourra pas obtenir les informations réelles du contenu crypté.
4. Code d'injection de la console
Je ne sais pas si vous, lecteurs, avez remarqué le message d'avertissement sur la console du site officiel de Tmall, comme le montre la figure 4.1. Pourquoi est-ce parce qu'il y en a ? Les pirates inciteront les utilisateurs à coller des éléments dans la console (intimidant les utilisateurs novices qui ne comprennent pas le code). Par exemple, ils peuvent publier un article dans leur cercle d'amis disant : « Tant que vous visitez Tmall, appuyez sur F12 et collez. le contenu suivant, vous pouvez obtenir un « cadeau de xx yuans » et ainsi de suite, alors certains utilisateurs l'exploiteront vraiment et ils ne sauront pas que leur vie privée a été exposée.
Cette approche de Tmall avertit également les utilisateurs de ne pas faire cela. Il semble que la sécurité frontale de Tmall soit également très bonne. Cependant, ce type d’attaque est finalement minoritaire, vous pouvez donc simplement y jeter un œil. Si vous constatez réellement que certains utilisateurs seront attaqués de cette manière, pensez à penser à la solution de Tmall.
5. La pêche
Le phishing est également une méthode d'attaque très ancienne, mais ce n'est pas vraiment une attaque frontale. Mais après tout, il s’agit d’une attaque au niveau de la page, alors parlons-en ensemble. Je crois que beaucoup de gens vivront cette expérience. Quelqu'un du groupe QQ a posté sur un travail à temps partiel, sur le fait de partir à l'étranger et de vendre sa maison et sa voiture. Les détails sont dans mon espace QQ, etc. Après l'avoir ouvert, j'ai trouvé une boîte de connexion QQ. En fait, je savais que ce n'était pas QQ lorsque j'ai regardé le nom de domaine, mais c'était très similaire à la connexion QQ. Les utilisateurs qui ne savaient pas ce qui se passait ont en fait saisi leur. nom d'utilisateur et mot de passe Par conséquent, ils n'étaient pas connectés à QQ. Utilisateurs Le nom et le mot de passe ont été envoyés à quelqu'un.
En fait, cette méthode est également utilisée sur le front-end. Essayons ensuite d’utiliser l’avant pour mener une pêche réaliste.
1. Tout d'abord, nous partageons un article dans l'espace xx, puis nous incitons les autres à cliquer.
2 Ensuite, nous avons discrètement modifié l'adresse de la page Web source redirigée sur le site cheat.php.
Ainsi, après que l'utilisateur a visité notre site Web trompeur, l'onglet précédent a discrètement changé et nous l'avons discrètement remplacé par un site Web de phishing pour inciter l'utilisateur à saisir son nom d'utilisateur, son mot de passe, etc.
3 Notre site Web de phishing est déguisé en espace XX et permet aux utilisateurs de saisir leur nom d'utilisateur et leur mot de passe
Cette méthode de phishing est plus intéressante. nous comparons Il est difficile d'empêcher ce type d'attaque. Nous ne pouvons pas ouvrir tous les liens de pages en utilisant js. Par conséquent, remplacez le lien de saut de lien externe par le saut de page actuel, ou envoyez une invite à l'utilisateur lorsque la page est déchargée, ou remplacez tous les sauts de la page par window.open, et lors de l'ouverture, suivez la plupart des efforts de prévention et de contrôle du phishing. Nous avons le même objectif : nous devons améliorer la sensibilisation des internautes à la sécurité.
6. À quoi devons-nous prêter attention lors du développement quotidien
Lors du développement, nous devons nous méfier du contenu généré par les utilisateurs et procéder couche par étape ? détection de couche des informations saisies par l'utilisateur. Faites attention au filtrage du contenu de sortie de l'utilisateur (évasion, etc.) et n'oubliez pas de crypter la transmission du contenu important (que ce soit en utilisant https ou en le cryptant vous-même)
Récupérez et publiez des demandes. doit strictement respecter les spécifications, ne les mélangez pas, n'utilisez pas jsonp pour effectuer certaines soumissions dangereuses.
Veuillez utiliser les informations contenues dans l'URL avec prudence. Gardez toujours à l’esprit les endroits où votre site Web peut être dangereux.
Ce qui précède concerne la sécurité frontale. Pour plus de problèmes front-end, veuillez visiter le site Web PHP chinois : //m.sbmmt.com/
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!