Maison > interface Web > Tutoriel H5 > le corps du texte

Introduction détaillée à la sécurité frontale et comment la prévenir

王林
Libérer: 2019-08-21 16:19:52
avant
4555 Les gens l'ont consulté

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. policyPhishingLes 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 :

Introduction détaillée à la sécurité frontale et comment la prévenirLa 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(&#39;xss&#39;)</SCRIPT>
Copier après la connexion
Copier après la connexion

Introduction détaillée à la sécurité frontale et comment la prévenir

Introduction détaillée à la sécurité frontale et comment la prévenirVous 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

Introduction détaillée à la sécurité frontale et comment la prévenirNous 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(&#39;xss&#39;)</SCRIPT>
Copier après la connexion
Copier après la connexion

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, Introduction détaillée à la sécurité frontale et comment la prévenir

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 Introduction détaillée à la sécurité frontale et comment la prévenir

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. Introduction détaillée à la sécurité frontale et comment la prévenir

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/>
Copier après la connexion
Cependant, l'ajout de jQuery peut le faire. La raison est que jquery y trouvera la balise de script lors de la modification de l'élément d'ajout en fragment, puis utilisera eval pour l'exécuter à nouveau. La méthode utilisée par l'ajout de jquery est également innerHTML. InnerHTML convertira les codes Unicode en entités de caractères.

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.

Introduction détaillée à la sécurité frontale et comment la prévenir

Mais et si nous écrivions l'adresse de cette image différemment ?

Introduction détaillée à la sécurité frontale et comment la prévenir

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 forgeryCross -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 :

Introduction détaillée à la sécurité frontale et comment la prévenir

. Ensuite, le site Web du hacker peut être développé comme ceci :

Introduction détaillée à la sécurité frontale et comment la prévenir

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 XSRF

Si 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 :

Introduction détaillée à la sécurité frontale et comment la prévenir

Le code du hacker est le suivant :


Introduction détaillée à la sécurité frontale et comment la prévenir

Après en cliquant, l'utilisateur a soumis, mais même lui-même Personne ne sait. Comment se défendre contre cette situation

Le moyen le plus simple est d'ajouter un code de vérification, afin qu'autre que l'utilisateur, le site Web du pirate informatique ne puisse pas obtenir la vérification ? code de la session de l'utilisateur. Mais cela arrivera. Cela réduira l'expérience de soumission de l'utilisateur, en particulier pour certaines opérations fréquentes, si l'utilisateur est toujours invité à saisir le code de vérification, ce sera très ennuyeux. La meilleure façon est de le faire dans les pages qu'ils visitent. Téléchargez le jeton pour vérification. Toutes les soumissions effectuées par l'utilisateur doivent apporter le jeton généré sur cette page. L'essence de cette méthode n'est pas différente de l'utilisation du code de vérification, mais dans cette méthode. , le même jeton est utilisé pour chaque session sur la page entière. Pour de nombreuses opérations de publication, les développeurs peuvent automatiquement apporter le jeton de la page actuelle. Si la vérification du jeton échoue, cela prouve que la soumission n'est pas envoyée depuis ce site Web, et le même jeton est utilisé pour chaque session sur la page entière. le processus de soumission sera terminé si le jeton est effectivement généré pour ce site Web, il peut passer

Le code est le suivant :

ne porte pas. le jeton généré par chaque session de ce site, donc la soumission échoue. Introduction détaillée à la sécurité frontale et comment la prévenir

Le formulaire Web de ce site portera automatiquement le jeton généré par ce site

Si vous utilisez à nouveau la page Web de ce site pour soumettre, vous pouvez soumettez-le via Introduction détaillée à la sécurité frontale et comment la prévenir

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.

Introduction détaillée à la sécurité frontale et comment la prévenir

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.

Introduction détaillée à la sécurité frontale et comment la prévenir

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.

1Introduction détaillée à la sécurité frontale et comment la prévenir

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 : https://www.php.cn/

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!

Étiquettes associées:
source:千锋教育
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!