web-dev-qa-db-fra.com

Le mode «view-source» du navigateur évite-t-il les attaques par script?

Disons qu'il y a une URL www.badjs.com qui n'est pas fiable et peut contenir de mauvais scripts.

Intuitivement, une navigation view-source vers cette URL n'exécute aucun script, elle doit donc être sécurisée. Cela me permettrait au moins d'inspecter la source en toute sécurité.

Mais l'intuition est un moyen terrible de tirer des conclusions sur les problèmes de sécurité, donc ma question est:

View-source est-il un moyen sûr de regarder un site Web du point de vue de l'injection de script js?

29
tohster

Oui, il est absolument sûr (dans Google Chrome) d'ouvrir un site Web non fiable dans view-source mode. Le point clé à noter ici est que vous devez "ouvrir" la page dans view-source mode, ce qui signifie que vous ne devez autoriser aucun rend en chargeant normalement la page Web en premier puis en affichant la source.

Un exemple dans Google Chrome serait view-source:http://www.badjs.com/

De par sa conception, Google Chrome lancera une nouvelle demande GET au serveur et fournira au navigateur client la version non rendue de la page Web lorsqu'il est dans view-source mode.

Vous pouvez également utiliser une extension ou un module complémentaire sans script pour votre navigateur spécifique pour empêcher toute attaque de script.

34
Joseph

Bien qu'il soit actuellement sûr sur Chrome vous ne devriez pas baser vos futures vérifications sur cela. Les choses peuvent changer à tout moment et je n'ont pas vu le manque de rendu comme une caractéristique spécifiquement documentée.

Si vous voulez regarder le code, il est préférable de télécharger la page via un outil en ligne de commande ( curl par exemple) et d'analyser ce qui a été chargé et enregistré dans un fichier. Cela a également la valeur ajoutée de tester facilement diverses pages qui peuvent éventuellement être servies en réponse à différents User-Agents.

22
WoJ

Bien qu'il n'y ait rien de mal avec les autres réponses disant qu'il est actuellement sûr, il y a un malentendu potentiel en cours. Vous avez dit que vous vouliez l'utiliser pour vérifier si un site est sûr, donc vous allez probablement charger une page normalement après avoir trouvé aucun contenu malveillant lors de la visualisation de la source. Si cela est vrai, vous devez savoir que les sites Web sont capables de détecter (ou au moins de déduire) que vous utilisez view-source:. Non seulement, sur Firefox au moins, n'utilise pas le cache, ce qui entraîne le chargement de la page une deuxième fois, mais il ne charge pas d'autres ressources. Si un site voit quelqu'un avec un agent utilisateur de navigateur normal se connecter mais ne charge aucune autre ressource, il peut déduire que l'utilisateur vérifie la source. Il est simple d'automatiser cette détection et de ne servir du JavaScript malveillant à partir d'une ressource que dans le cas où il est chargé avec tout le reste de la page. Cela cacherait sa présence à votre inspection de la source, malgré le fait que le site Web vous serve toujours du JavaScript malveillant.

Une solution potentielle serait d'utiliser Inspect Element, qui examine la page actuellement ouverte et permet de lire la source. Ceci est beaucoup plus difficile à détecter (bien que ce ne soit pas impossible, car CSS peut déterminer la taille de la fenêtre du navigateur, qui rétrécit d'une quantité spécifique lorsque l'élément d'inspection est ouvert). Inspecter l'élément est plus complexe et peut être plus exploitable que view-source:, vous devez donc appliquer la modélisation des menaces dans cette situation.

0
forest