2010-09-06 6 views
0

Sur mon site, je souhaite autoriser les utilisateurs à ajouter des références aux images hébergées sur Internet. Ces images peuvent ensuite être vues par tous les utilisateurs de mon site. Autant que je comprenne, ceci pourrait ouvrir le risque de script inter-site, comme dans le scénario suivant: L'utilisateur A ajoute un lien à un gif qu'il héberge sur son propre serveur web. Ce serveur web est configuré de telle sorte qu'il renvoie javascript au lieu de l'image. L'utilisateur B ouvre la page contenant l'image. Au lieu de voir l'image, javascript est exécuté.Images liées en externe - Comment éviter les scripts intersites

Mes tâches de sécurité actuelles sont actuellement telles que, à la fois sur enregistrer et ouvrir, tout le contenu est codé. J'utilise asp.net (C#) sur le serveur et beaucoup de jquery sur le client pour construire des éléments d'interface utilisateur, y compris la génération de balises d'image.

Est-ce que cette peur de la mienne est correcte? Ai-je manqué d'autres failles de sécurité importantes ici? Et le plus important de tous, comment puis-je empêcher cette attaque? La seule manière sûre que je peux penser en ce moment, est webrequest l'URL d'image sur le serveur et vérifie s'il contient n'importe quoi d'autre que des données binaires ...

Répondre

2

La vérification du dossier est en effet une image ne aidera pas. Un attaquant pourrait renvoyer une chose quand le serveur le demande et une autre quand une victime potentielle fait la même requête. Ceci étant dit, tant que vous limitez l'URL à n'être imprimée que dans l'attribut src d'une balise img, vous avez un défaut CSRF, mais pas un XSS.

Quelqu'un pourrait par exemple créer une « image » URL le long des lignes de: http://yoursite.com/admin/?action=create_user&un=bob&pw=alice Ou, de façon plus réaliste mais plus agaçant; Si toutes les actions sensibles (déconnexion, édition de profils, création de messages, changement de langue/thème) ont des jetons, alors un vecteur d'attaque comme celui-ci ne donnerait aucun avantage à l'utilisateur.

Mais revenons à votre question. à moins qu'il y ait un bug de navigateur courant, je ne peux pas penser que vous n'auriez pas XSS. Oh, n'oubliez pas de vous assurer que l'URL de l'image n'inclut pas les caractères impairs. c'est-à-dire: une URL d'image de "><script>alert(1)</script><!- - peut évidemment avoir de mauvais effets. Je suppose que tu sais pour échapper à ça.

+0

Quelqu'un pourrait simplement utiliser javascript: alert ('XSS'); à l'intérieur de l'image tag src si. (C'est si vous ne vérifiez pas c'est en fait une url) – domenukk

Questions connexes