Comment éviter de “Cross-Site des scripts d'Attaques”
Comment éviter de script de site à site des attaques?
script de site à site les attaques (ou cross-site scripting) est par exemple si vous avez un livre d'or sur votre page d'accueil et un client poste un peu de code javascript qui fx vous redirige à un autre site web ou l'envoie de vos biscuits dans un courriel à un utilisateur malveillant ou peut-être beaucoup d'autres choses qui peut s'avérer être un réel danger pour vous et les gens qui visitent votre page.
Je suis sûr qu'il peut être fait fx. dans PHP par la validation des formulaires mais je ne suis pas assez expérimenté pour fx. interdiction de javascript ou d'autres choses qui peuvent vous faire du mal.
J'espère que vous comprenez ma question et que vous êtes en mesure de m'aider.
Il y a des options pour n'importe quel langage/framework/etc. Vous obtiendrez des réponses précises - comme htmlencode - si vous donnez plus d'informations sur votre configuration. (Pile).
Vous avez raison, Tobiasopdenbrouw, mais c'était en fait plus comme une question d'ordre général, d'autres personnes pourraient aussi tirer parti d' 🙂
OriginalL'auteur Latze | 2010-08-09
Vous devez vous connecter pour publier un commentaire.
Pas vraiment. L'étage d'entrée est entièrement le mauvais endroit pour répondre à des XSS questions.
Si l'utilisateur tape, dire
<script>alert(document.cookie)</script>
dans une entrée, il n'y a rien de mal à cela en lui-même. Je l'ai fait dans ce message, et si StackOverflow ne pas le laisser nous aurions beaucoup de difficulté à parler à propos de JavaScript sur le site! Dans la plupart des cas, vous voulez permettre à tous d'entrée(*), de sorte que les utilisateurs peuvent utiliser un<
caractère, littéralement, signifie un signe inférieur.La chose est, lorsque vous écrivez du texte dans une page HTML, vous devez vous échapper correctement pour le contexte, il va dans. Pour PHP, cela signifie que l'aide
htmlspecialchars()
à la étage de sortie:[PHP astuce: vous pouvez définir vous-même une fonction avec un nom plus court pour faire
echo htmlspecialchars
, puisque c'est assez beaucoup de saisie à faire à chaque fois que vous voulez mettre une variable dans le code HTML.]C'est nécessaire, quel que soit l'endroit où le texte vient de la, si elle provient d'un utilisateur-formulaire soumis ou non. Tandis que soumis par l'utilisateur des données est l'endroit le plus dangereux d'oublier votre code HTML de codage, le point est vraiment ce que vous êtes en prenant une chaîne de caractères dans un format (texte brut) et en l'insérant dans un contexte dans un autre format (HTML). Toutes les fois que vous jetez un texte dans un contexte différent, vous allez avoir besoin d'un codage/s'échapper régime approprié à ce contexte.
Par exemple, si vous insérez du texte dans un JavaScript littéral de chaîne, vous devez échapper à la citation de caractères, la barre oblique inverse et retours à la ligne. Si vous insérez du texte dans un composant de requête dans l'URL, vous aurez besoin de convertir la plupart des non-caractères alphanumériques dans
%xx
séquences. Chaque contexte a ses propres règles; vous devez savoir ce qui est le droit de la fonction de chaque contexte dans la langue de votre choix/cadre. Vous ne pouvez pas résoudre ces problèmes par l'amputation des soumissions de formulaire à l'étape d'entrée, même si beaucoup de naïfs programmeurs PHP essayer, qui est la raison pour laquelle de nombreuses applications de gâcher votre entrée en cas de coin et ne sont toujours pas sécurisé.(*: eh bien, presque tout. Il y a un argument raisonnable pour le filtrage des caractères de contrôle ASCII du texte soumis. Il est très peu probable que de les laisser peut faire du bien.
En Plus des cours, vous aurez l'application validations spécifiques que vous aurez envie de le faire, comme faire en sorte qu'un champ e-mail ressemble à une adresse e-mail ou numéros de vraiment sont numériques. Mais ce n'est pas quelque chose qui peut être la couverture de l'appliquer à toutes les entrées pour vous sortir du pétrin.)
OriginalL'auteur bobince
Attaques de script entre sites (XSS) se produire lorsque le serveur accepte entrée à partir du client et ensuite aveuglément écrit que l'entrée de retourner à la page. Plus de la protection contre ces attaques consiste à échapper à la sortie, de sorte que le Javascript se transforme en HTML.
Une chose à garder à l'esprit est que ce n'est pas seulement les données en provenance directe du client qui peut contenir une attaque. Un Stockées XSS attaque consiste à écrire du JavaScript malveillant à une base de données, dont le contenu est ensuite interrogé par l'application web. Si la base de données peuvent être écrites séparément par le client, l'application peut ne pas être en mesure d'être sûr que les données avaient été échappé correctement. Pour cette raison, l'application web doit traiter TOUTES les données qu'il écrit pour le client que si elle peut contenir une attaque.
Voir ce lien pour une bonne ressource sur la façon de vous protéger: http://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet
Valider les entrées, les sorties d'échappement
OriginalL'auteur danben