2010-11-23 49 views
1

Je crée une page dans laquelle l'utilisateur va spécifier l'URL d'une image. Cet URL sera stocké dans DB, puis il sera récupéré pour afficher l'image. Jusqu'à présent, il est bon que l'utilisateur n'essaie pas d'être espiègle.Ai-je besoin de faire attention lors de la définition de l'attribut src d'une image, où le chemin src est spécifié par l'utilisateur?

Mais maintenant, en passant par http://ha.ckers.org/xss.html, un utilisateur peut également spécifier une URL qui est en fait un script. J'ai essayé ceci dans une page mais cela n'a fait aucun mal. [aucune alerte n'est affichée] Donc le point est, dois-je vraiment faire attention à ce que l'utilisateur spécifie? Si oui, alors quels sont les cas/scénarios que je dois considérer, et comment le faire?

Répondre

5

Tant que vous obtenez quelque chose d'une source non fiable, vous devez en prendre soin. Dans ce cas, les utilisateurs peuvent écrire du code nuisible pour casser votre code HTML.

<img alt='' src='' />alert('xss');<!--'--> 

De plus, l'entrée de l'utilisateur doit être traitée de différentes manières lorsqu'il est utilisé à différents endroits. Par exemple. Url encoder, encoder Html, encoder Javascript.

En résumé, ne faites pas confiance à la saisie de l'utilisateur!

0

Il pourrait également fournir une valeur comme myevilscript.php où il fait des trucs PHP. Donc, en fait, vous devriez vraiment pas faire :)

1

Avant le stockage dans la base de données, assurez-vous qu'il est:

  1. URL valide (chaque langue côté serveur a ses propres méthodes)
  2. d'image valide (en utilisant une sorte de XMLHTTP/WebRequest dans le côté serveur et analyser le contenu)

Si vous avez étape ASP.NET # 2 devenir simple question de créer une nouvelle Bitmap en utilisant le flux de WebResponse et voir si elle est couronnée de succès et Bitmap est valide.