Discussion préliminaire sur xss

Poisson de fond 2021-09-15 04:55:32
discussion pr liminaire sur xss


XSS,C'est - à - dire: Cross Site Script,C'est une attaque de script inter - site, Son acronyme original était CSS,Mais pour les feuilles de style en cascade(Cascading Style Sheet)Il y a une différence,Donc dans le domaine de la sécurité, c'est ce qu'on appelle XSS.

XSS Une attaque est un attaquant qui injecte du code client malveillant sur un site Web,Modifier la page Web du client par un script malveillant,Ainsi, lorsque l'utilisateur parcourt la page,Une façon d'attaquer le navigateur de l'utilisateur ou d'obtenir des données privées de l'utilisateur.

Les scripts malveillants injectés par un attaquant sur une page client incluent généralement JavaScript,Parfois, il contient HTML Et Flash. Il y a plusieurs façons de procéder XSS Attaque,Mais ils ont en commun:Prenez des données privées comme cookie、session Envoyé à l'attaquant,Rediriger la victime vers un site Web contrôlé par l'attaquant,Une opération malveillante sur la machine de la victime.

XSS Les attaques peuvent être divisées en 3 Catégorie:

  • Réflexe(Non persistant)
  • Type de stockage(Durable)
  • Basé sur DOM.

CSRF Et XSS C'est idiot.

He Wei Sécurité des réseaux d'information ppt

Un mot pour résumer CSRF Les dangers:Vol d'identité de la victime,Que peut faire la victime,Ce qu'un attaquant peut faire en tant que victime.

CSRF Avec XSS La différence entre:CSRF L'attaquant n'a pas obtenu la permission de l'utilisateur,J'emprunte juste l'autorisation de l'utilisateur pour compléter l'attaque;Et XSS Peut être volé cookie Pour obtenir l'autorisation de l'utilisateur de détruire .

Réflexe

Réflexe XSS Les étapes de l'attaque:

  1. L'attaquant a construit URL,Contient du Code malveillant.
  2. L'utilisateur ouvre avec un code malveillant URL Heure,Le serveur du site Web envoie le Code malveillant de URL Retirer,Splice in HTML Retour au navigateur.
  3. Résoudre l'exécution après réception de la réponse par le navigateur utilisateur,Le Code malveillant mélangé est également exécuté.
  4. Le Code malveillant vole les données de l'utilisateur et les envoie au site Web de l'attaquant,Ou se faire passer pour un utilisateur,Invoquer l'interface du site cible pour effectuer l'opération spécifiée par l'attaquant

Réflexe XSS Il suffit de mettre les données saisies par l'utilisateur “Réflexe” Au navigateur, .Cette attaque exige souvent qu'un attaquant incite l'utilisateur à cliquer sur un lien malveillant , Ou soumettre un formulaire , Ou en entrant sur un site Web malveillant , Le script d'injection entre dans le site Web attaqué .

Réflexe

L'adresse du lien malveillant indique localhost:8001/?q=111&p=222. Services(Node) Traitement des demandes de liens malveillants :

const http = require("http");
function handleReequest(req, res) {
res.setHeader("Access-Control-Allow-Origin", "*");
res.writeHead(200, { "Content-Type": "text/html; charset=UTF-8" });
// Écrivez le pas directement à l'adresse demandée 
res.write('<script>alert("Réflexe XSS Attaque")</script>');
res.end();
}
const server = new http.Server();
server.listen(8001, "127.0.0.1");
server.on("request", handleReequest);
Copier le Code

Quand un utilisateur clique sur un lien malveillant , La page saute à une page préparée par l'attaquant , Vous trouverez que la page de l'attaquant a exécuté js Script:

 Liens malveillants

Cela crée un réflexe XSS Attaque. Un attaquant peut injecter un script malveillant arbitraire pour attaquer , Peut - être injecter un script de farce , Ou injecter pour accéder aux données de confidentialité de l'utilisateur (Par exemple: cookie)Script pour

Type de stockage

Type de stockage XSS Les étapes de l'attaque:

  1. Un attaquant a soumis du Code malveillant à la base de données du site Web cible.
  2. Lorsque l'utilisateur ouvre le site cible,Le serveur Web a retiré le Code malveillant de la base de données,Splice in HTML Retour au navigateur.
  3. Résoudre l'exécution après réception de la réponse par le navigateur utilisateur,Le Code malveillant mélangé est également exécuté.
  4. Le Code malveillant vole les données de l'utilisateur et les envoie au site Web de l'attaquant,Ou se faire passer pour un utilisateur,Invoquer l'interface du site cible pour effectuer l'opération spécifiée par l'attaquant.

Type de stockage XSS Les données saisies par l'utilisateur "Stockage" Côté serveur, Lorsque le navigateur demande des données , Le script est téléchargé depuis le serveur et exécuté .Ce genre de XSS L'attaque est très stable .

Un scénario plus courant est lorsqu'un attaquant écrit un article contenant de la malice dans une communauté ou un forum JavaScript Article ou commentaire sur le Code , Après la publication de l'article ou du commentaire , Tous les utilisateurs qui ont accédé à cet article ou commentaire , Tous exécuteront ce paragraphe malveillant dans leur navigateur JavaScript Code.

Type de stockage XSS Avec réflexe XSS La différence entre:Type de stockage XSS Le Code malveillant existe dans la base de données,Réflexe XSS Le Code malveillant existe pour URL - Oui..

<input type="text" id="input" />
<button id="btn">Submit</button>
<script> const input = document.getElementById("input"); const btn = document.getElementById("btn"); let val; input.addEventListener( "change", (e) => { val = e.target.value; }, false ); btn.addEventListener( "click", (e) => { fetch("http://localhost:8001/save", { method: "POST", body: val, }); }, false ); </script>
Copier le Code

Démarrer un Node Surveillance du service save Demande.

const http = require("http");
let userInput = "";
function handleReequest(req, res) {
const method = req.method;
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Headers", "Content-Type");
if (method === "POST" && req.url === "/save") {
let body = "";
req.on("data", (chunk) => {
body += chunk;
});
req.on("end", () => {
if (body) {
userInput = body;
}
res.end();
});
} else {
res.writeHead(200, { "Content-Type": "text/html; charset=UTF-8" });
res.write(userInput);
res.end();
}
}
const server = new http.Server();
server.listen(8001, "127.0.0.1");
server.on("request", handleReequest);
Copier le Code

Lorsque l'utilisateur clique sur le bouton soumettre pour soumettre les informations d'entrée au serveur ,Le serveur passe userInput La variable enregistre l'entrée . Quand l'utilisateur passe http://localhost:8001/${id} Au moment de la visite, Le serveur retournera et id Contenu correspondant( Cet exemple simplifie le traitement ). Si l'utilisateur a entré du contenu de script malveillant , Lorsque d'autres utilisateurs accèdent au contenu , Les scripts malveillants seront exécutés du côté du navigateur :

Script malveillant

var element = document.getElementById("root");
element.innerHTML = '<script>alert("XSS Attack");</script>';
Copier le Code

Basé sur DOM

DOM Type XSS Les étapes de l'attaque:

  1. L'attaquant a construit URL,Contient du Code malveillant.
  2. L'utilisateur ouvre avec un code malveillant URL.
  3. Résoudre l'exécution après réception de la réponse par le navigateur utilisateur,Front End JavaScript Enlevez - le. URL Code malveillant dans et exécuter.
  4. Le Code malveillant vole les données de l'utilisateur et les envoie au site Web de l'attaquant,Ou se faire passer pour un utilisateur,Invoquer l'interface du site cible pour effectuer l'opération spécifiée par l'attaquant.

Basé sur DOM De XSS Une attaque est une modification d'une page par un script malveillant DOM Structure,- Oui. Une attaque purement client .DOM Type XSS Les deux premiers. XSS La différence entre:DOM Type XSS Attaque en cours,L'extraction et l'exécution de code malveillant sont effectuées du côté du Navigateur,Appartient à l'extrémité avant JavaScript Vulnérabilités propres à la sécurité,Et les deux autres XSS Toutes les vulnérabilités de sécurité du serveur.

<h2>XSS:</h2>
<input type="text" id="input" />
<button id="btn">Submit</button>
<div id="div"></div>
<script> const input = document.getElementById("input"); const btn = document.getElementById("btn"); const div = document.getElementById("div"); let val; input.addEventListener( "change", (e) => { val = e.target.value; }, false ); btn.addEventListener( "click", () => { div.innerHTML = `<a href=${val}>testLink</a>`; }, false ); </script>
Copier le Code

Après la soumission de l'utilisateur , Le Code de page devient :<a href onlick="alert(/xss/)">testLink</a>

En ce moment, L'utilisateur clique sur le lien généré , Le script correspondant sera exécuté :

Script

Prévention XSS

Courant dominant Le navigateur a intégré la protection XSS Mesures prises.Mais pour les développeurs,, Il faut également trouver des solutions fiables pour prévenir XSS Attaque.

HttpOnly Prévenir les vols Cookie

HttpOnly Initialement proposé par Microsoft, C'est devenu une norme . Le navigateur désactivera la page Javascript Accès avec HttpOnly Propriété Cookie.

  1. Qu'est - ce que HttpOnly?

    Si cookie Set in HttpOnly Propriétés,Alors, passe. js Le script ne sera pas lu à cookie Information,Cela empêche efficacement XSS Attaque,Voler cookie Contenu, Ça ajoute cookie Sécurité;

    Même si c'est le cas, Et ne déposez pas d'informations importantes dans cookie.XSS Nom complet Cross SiteScript,Attaque de script inter - site, Le principe est que l'attaquant se dirige vers XSS Entrée dans le site Web de la vulnérabilité (Entrée)Malicieuse HTML Code,Ce paragraphe HTML Le Code s'exécute automatiquement , Pour atteindre le but de l'attaque .PrincipalVoler un utilisateur Cookie、Détruire la structure de la page、 Rediriger vers un autre site Attendez..

  2. HttpOnly Exemple de configuration pour (Code du serveur)

    response.setHeader(
    "Set-Cookie",
    "cookiename=httponlyTest;Path=/;Domain=domainvalue;Max-Age=seconds;HTTPOnly"
    );
    // Par exemple:Paramètrescookie
    response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly");
    //Définir plusieurscookie
    response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly");
    response.addHeader("Set-Cookie", "timeout=30; Path=/test; HttpOnly");
    // ParamètreshttpsDecookie
    response.addHeader("Set-Cookie", "uid=112; Path=/; Secure; HttpOnly");
    Copier le Code

Il est dit plus haut , Un attaquant peut obtenir un utilisateur en injectant un script malveillant Cookie Information.En général Cookie Contient des informations sur les identifiants de connexion de l'utilisateur , L'attaquant obtient Cookie Après, Pour lancer Cookie Attaque de détournement .Alors...,Techniquement,HttpOnly Ce n'est pas un blocage XSS Attaque, Mais ça peut arrêter XSS Après l'attaque Cookie Attaque de détournement .

Vérification des entrées

Ne faites confiance à aucune entrée de l'utilisateur . Pour vérifier toute entrée de l'utilisateur 、 Filtrage et évasion

In XSS En défense , La vérification des entrées consiste généralement à vérifier si les données saisies par l'utilisateur contiennent <,> Caractère spécial égal,Si elle existe, Pour filtrer ou encoder des caractères spéciaux ,C'est aussi connu sous le nom de XSS Filter.

Et dans certains cadres frontaux , Il y en aura une copie decodingMap, Utilisé pour encoder ou filtrer les caractères ou étiquettes spéciaux contenus dans l'entrée de l'utilisateur , Si la bande d'entrée script Contenu de l'étiquette, Va filtrer directement .

Contrôle de sortie

Il y aura des problèmes avec l'entrée de l'utilisateur , La sortie du serveur peut également avoir des problèmes . Sortie de la variable vers HTML Page Time, Vous pouvez utiliser le codage ou l'évasion pour vous défendre XSS Attaque. Filtrer régulièrement la sortie avant de la sortir sur la page .

Références

Regardez d'abord les marchandises sèches

Meituan

githup

1-csdn

2-csdn

版权声明
本文为[Poisson de fond]所创,转载请带上原文链接,感谢
https://qdmana.com/2021/09/20210914174203435P.html

  1. Vue bidirectional binding (V-model bidirectional binding,. Sync bidirectional binding,. Sync transfer object)
  2. Vue3.0 using Gaode map to obtain longitude and latitude information
  3. React realizes the function of copying pictures with one click
  4. White space, word break and word wrap are the three most basic and confusing attributes in CSS - thoroughly understand
  5. Trois ans d'expérience d'entrevue avec une femme de programmation diplômée, une réflexion sur la cohérence de l'expiration des données de redis Master slave Node,
  6. Résumé de l'entrevue Android de Dachang, carte technique Android
  7. Un plan de carrière Java correct, découvrez les questions que vous devez poser lors de l'entrevue d'embauche du printemps Java de cette année.
  8. Le résumé de l'entrevue Android de Dachang est en retard
  9. Un article vous a appris à gérer les entrevues sur le Web, à partager 350 vraies questions d'entrevue Java,
  10. Jquery Tools Methodology collation, Sharing a little interview Experience
  11. Jquery plug - in urianchor, app front end Development
  12. $in jquery, Visualized Web Development Tool
  13. Le développement Java doit être fait. Les entrevues https demandent souvent une analyse complète.
  14. vue v-if未生效问题
  15. vue动态改变组件外部元素样式
  16. Jdk's Past Life: The Classic Features of Thin Number - java5 - - - 15 -, webfront Development
  17. Résumé des questions d'entrevue pour les ingénieurs en développement Java, analyse des questions d'entrevue à haute fréquence Dubbo,
  18. The new front-end lady asked: there was a 404 problem refreshing the page in Vue routing history mode
  19. A Simple Css Meun
  20. Vue modifier dynamiquement le style de l'élément externe du composant
  21. Vue V - si problème non valable
  22. N'osez pas vous opposer à l'intervieweur et obtenir des commentaires personnels des stagiaires d'offer Ali après cinq rondes d'entrevue.
  23. Améliorer continuellement leur capacité à créer des primes, et les questions d'entrevue Java d'Alibaba Huawei Tencent et d'autres grandes usines sont sautées en octets.
  24. The new front-end lady asked: there was a 404 problem refreshing the page in Vue routing history mode
  25. Who doesn't want to make a scratch music by himself? Scratch music is realized by native JS
  26. Learn XPath to help climb the data of major e-commerce platforms in the Mid Autumn Festival
  27. vue動態改變組件外部元素樣式
  28. vue v-if未生效問題
  29. Je ne comprends pas comment la machine virtuelle JVM peut encore interviewer, et j'ai terminé ce dictionnaire d'entrevue Java de 1307 pages.
  30. Dongxh, mid autumn festival gifts 🥮, [CSS starry sky realization, Mid Autumn Festival poem]
  31. What if you want to see the moon and don't want to go out
  32. Mid Autumn Festival, Chang'e looks at the moon
  33. Mid Autumn Festival special! Use the simplest animation animation to make the most local and trendy holiday blessing greeting card. This romantic male and female tears of Xiao Chen.
  34. [Pixi] super beautiful! How to make mid autumn festival scene level animation!!
  35. Echarts realizes the rotation of the moon (super simple, you can see it at a glance)
  36. Dart mixin full resolution
  37. Some suggestions on Vue code readability | comments are rewarded
  38. 120 lines of code to achieve pure web video editing
  39. Yang yangsun took a selfie to celebrate his 30th birthday, and Wang Yanlin sent blessings.
  40. Comment passer une entrevue avec une entreprise Internet de première ligne, Android Classic Getting started tutoriel
  41. Comment essayer un développeur Android vraiment niveau, 【 résumé de l'entrevue 】
  42. Wang Ou went back to the hotel with the man at night. It was suspected that his relationship was open. The netizen replied mercilessly: is the man single
  43. 借助HTML ping属性实现数据上报
  44. APNG在线制作、兼容、播放和暂停
  45. Apng production, compatibilité, lecture et pause en ligne
  46. Mise en œuvre de l'escalade des données avec l'attribut de Ping HTML
  47. Comment envoyer 100 000 requêtes http le plus rapidement possible
  48. JQuery Basics
  49. Front and back end data interaction (V) -- what is Axios?
  50. Serverless is a model architecture invented driven by economic benefits- Grady
  51. Les questions d'entrevue pour les ingénieurs Java d'Internet, les intervieweurs rencontrés sont tous de niveau architecte,
  52. Cinq ans d'entrevue d'expérience en développement Java, découvrez les questions que vous devez poser lors de l'entrevue d'embauche du printemps Java de cette année.
  53. La dernière collection de questions d'entrevue Java haute fréquence organisée cette année, 2021 Java Universal Popular Framework
  54. Intel selected Weilai es8 to promote driverless taxis in Europe
  55. JavaScript operator (1), Web Development Engineer
  56. Trier les questions d'entrevue Javascript, trier les points de connaissance des itinéraires d'apprentissage
  57. Song Mengjun's "sleepless night" triggered an upsurge of dance storm after 00
  58. Module management of "free and open source" front-end spa project crudapi background management system based on Vue and Quasar (14)
  59. Encapsulated PHP sends HTTP requests with curl. Get and post are very easy to use
  60. Front and back end data interaction (V) -- what is Axios?