Comment éviter "Cross-Site Script Attacks"

Comment éviter les attaques de script entre sites?

Les attaques de script entre sites (ou les scripts entre sites ) sont si vous avez, par exemple, un livre d'or sur votre page d'accueil et un client publie un code javascript qui fx vous redirige vers un autre site Web ou envoie vos cookies dans un courrier électronique à un utilisateur malveillant ou Pourrait être beaucoup d'autres choses qui peuvent s'avérer vraiment nuisibles pour vous et les personnes qui visitent votre page.

Je suis sûr que cela peut être fait fx. En PHP en validant des formes, mais je n'ai pas assez d'expérience pour fx. Interdire javascript ou d'autres choses qui peuvent vous nuire.

J'espère que vous comprenez ma question et que vous pouvez m'aider.

  • Quelles sont les défenses communes contre XSS?
  • Meilleure pratique: Legitimate Cross-Site Scripting
  • Attaques XSS et attributs de style
  • Cross domain postMessage, identifiez iFrame
  • Tentative d'exploit?
  • Qu'est-ce qui rend une entrée vulnérable à XSS?
  • Comment arrêter que mon site soit encadré par d'autres?
  • Cross-site scripting with Iframe
  • 2 Solutions collect form web for “Comment éviter "Cross-Site Script Attacks"”

    Je suis sûr que cela peut être fait fx. En PHP en validant des formulaires

    Pas vraiment. La phase d'entrée est entièrement le mauvais endroit pour résoudre les problèmes XSS.

    Si l'utilisateur tape, indiquez <script>alert(document.cookie)</script> dans une entrée, il n'y a rien de mal à cela en soi. Je l'ai fait dans ce message, et si StackOverflow ne l'a pas permis, nous aurions beaucoup de difficulté à parler de JavaScript sur le site! Dans la plupart des cas, vous souhaitez autoriser toute entrée (*), afin que les utilisateurs puissent utiliser un < caractère pour désigner littéralement un signe inférieur à celui.

    La chose est, lorsque vous écrivez du texte dans une page HTML, vous devez l'échapper correctement pour le contexte dans lequel il se pose. Pour PHP, cela signifie utiliser htmlspecialchars() au stade de sortie :

     <p> Hello, <?php echo htmlspecialchars($name); ?>! </p> 

    [Astuce PHP: vous pouvez définir vous-même une fonction avec un nom plus court pour faire l' echo htmlspecialchars , car il s'agit de beaucoup de typage à faire chaque fois que vous souhaitez mettre une variable dans un code HTML.]

    Ceci est nécessaire indépendamment de l'origine du texte, qu'il s'agisse d'un formulaire envoyé par l'utilisateur ou non. Alors que les données soumises par l'utilisateur sont le lieu le plus dangereux pour oublier votre codage HTML, il est vrai que vous prenez une chaîne dans un seul format (texte brut) et l'insérez dans un contexte dans un autre format (HTML). Chaque fois que vous lancez du texte dans un contexte différent, vous aurez besoin d'un programme de codage / échappement approprié à ce contexte.

    Par exemple, si vous insérez du texte dans un littéral de chaîne JavaScript, vous devriez échapper au caractère de citation, à la barre oblique inverse et aux nouvelles lignes. Si vous insérez du texte dans un composant de requête dans une URL, vous devrez convertir la plupart des non-alphanumériques en séquences %xx . Chaque contexte a ses propres règles; Vous devez savoir quelle est la bonne fonction pour chaque contexte dans votre langue / cadre choisi. Vous ne pouvez pas résoudre ces problèmes en déployant des soumissions de formulaire au stade de l'entrée, bien que de nombreux programmeurs naïfs de PHP essayez, c'est pourquoi tant d'applications gâchent votre entrée dans les écrans et ne sont toujours pas sécurisées.

    (*: Eh bien, presque n'importe quel. Il y a un argument raisonnable pour filtrer les caractères de contrôle ASCII à partir du texte soumis. Il est très peu probable que cela leur permette de bien faire. Bien sûr, vous aurez des validations spécifiques à l'application que vous voudrez Faire, comme s'assurer qu'un champ de courrier électronique ressemble à une adresse e-mail ou que les chiffres sont vraiment numériques. Mais ce n'est pas quelque chose qui peut s'appliquer à toutes les entrées pour vous faire sortir de problèmes.)

    Les attaques de script entre sites (XSS) se produisent lorsqu'un serveur accepte une entrée du client puis écrit aveuglément cette entrée à la page. La plus grande partie de la protection contre ces attaques consiste à échapper à la sortie, de sorte que le Javascript devient le HTML simple.

    Une chose à garder à l'esprit est qu'il ne s'agit pas seulement de données provenant directement du client qui peuvent contenir une attaque. Une attaque XSS stockée implique l'écriture de JavaScript malveillant dans une base de données dont le contenu est ensuite interrogé par l'application Web. Si la base de données peut être écrite séparément du client, l'application peut ne pas être en mesure de s'assurer que les données ont été échappées correctement. Pour cette raison, l'application Web devrait traiter TOUTES les données qu'il écrit au client comme s'il pouvait contenir une attaque.

    Consultez ce lien pour obtenir une ressource approfondie sur la façon de vous protéger: http://www.owasp.org/index.php/XSS_(Cross_Site_Scripting )_Prevention_Cheat_Sheet

    JavaScript rend le site Web intelligent, beauté et facile à utiliser.