Les IFRAMEs sont acceptés ; les légendes urbaines ne le sont pas.
Lorsque vous "utilisez des iframes", cela ne veut pas dire une seule chose. Il s'agit d'une ambiguïté lexicale. Selon le cas d'utilisation, "utiliser des iframes" peut signifier l'une des situations suivantes :
- Quelqu'un d'autre affiche votre contenu dans une iframe.
- Vous affichez le contenu de quelqu'un d'autre dans un iframe.
- Vous affichez votre propre contenu dans une iframe.
Alors, lesquels de ces cas peuvent vous mettre en danger ?
1. Quelqu'un d'autre affiche votre contenu
Ce cas est presque toujours désigné comme clickjacking - imiter le comportement de votre site, en essayant d'inciter vos utilisateurs à utiliser une fausse interface utilisateur au lieu du vrai site. Le malentendu ici est que vous utilisez ou non des iframes n'est pas pertinent, ce n'est tout simplement pas à vous de décider - c'est à vous de décider. quelqu'un d'autre utilise des iframes et vous ne pouvez rien y faire. D'ailleurs, ils n'en ont pas besoin : ils peuvent copier votre site d'une autre manière, en volant votre code html, en créant un faux site à partir de rien, etc.
L'abandon des iframes pour tenter d'empêcher le clickjacking n'a donc aucun sens.
2. Vous affichez le contenu de quelqu'un d'autre
Des trois ci-dessus, c'est le seul qui est un peu risqué mais la plupart des articles effrayants que vous lisez tout le temps viennent d'un monde d'avant politique d'origine commune a été introduit. À l'heure actuelle, il n'est toujours pas recommandé d'inclure n'importe quel site dans le vôtre (qui sait ce qu'il contiendra demain ?), mais s'il s'agit d'une source fiable (accuweather, yahoo stock info, etc.), vous pouvez le faire en toute sécurité. Le grand non-non ici est de laisser les utilisateurs (donc, les utilisateurs malveillants) contrôler le site de src
de l'iframe, lui indiquant ce qu'il doit afficher. Ne laissez pas les utilisateurs charger un contenu arbitraire dans votre page c'est la racine de tout mal. Mais c'est vrai. avec ou sans iframes. Cela n'a rien à voir avec eux ; cela peut arriver en utilisant une script
ou un style
tag (bonne chance pour vivre sans eux) - le problème est que vous les laissez sortir. Toute sortie sur votre site contenant un contenu donné par l'utilisateur est RISQUÉE. Si vous ne l'aseptisez pas (en le dé-humanisant), vous ouvrez votre site aux attaques XSS. <script>
dans votre contenu, et c'est une mauvaise nouvelle. Genre, une baaa mauvaise nouvelle.
N'éditez jamais une entrée utilisateur sans vous assurer qu'elle est inoffensive.
Ainsi, bien que les iframes soient à nouveau innocentes, la leçon à retenir est la suivante : ne les faites pas afficher du contenu tiers, sauf si vous avez confiance en la source. En d'autres termes, n'incluez pas de contenu non fiable dans votre site. (De même, ne vous jetez pas devant les trains de marchandises qui approchent à toute vitesse).
3. Vous affichez votre propre contenu dans une iframe.
Celui-ci est évidemment inoffensif. Votre page est fiable, le contenu interne de l'iframe est fiable, rien ne peut aller mal . Iframe n'est pas un tour de magie, c'est juste une technique d'encapsulation. Vous avez absolument le droit de montrer une partie de votre contenu dans un bac à sable. C'est un peu comme si vous le mettiez à l'intérieur d'un div ou de n'importe quoi d'autre, mais il aura son propre environnement de document.
TL;DR
- Cas 1 : peu importe que vous utilisiez des iframes ou non,
- Cas 2 : pas un problème d'iframe,
- Cas 3 : cas absolument inoffensif.
Arrêtez de croire aux légendes urbaines. La vérité est que, iframe
-sont totalement sûrs. Vous pourriez aussi bien accuser script
des balises pour leur dangerosité ; tout peut causer des problèmes lorsqu'il est inséré de manière malveillante dans un site. Mais comment l'ont-ils inséré en premier lieu ? Il doit y avoir une vulnérabilité dorsale existante si quelqu'un a pu injecter du contenu html dans un site. Blâmer un élément de technologie pour une attaque commune (au lieu de trouver la cause réelle) n'est qu'un synonyme pour garder les failles de sécurité ouvertes. Trouvez le dragon derrière le feu.
Les sorties non numérisées sont mauvaises, les iframes ne le sont pas.
Arrêtez la chasse aux sorcières.
UPDATE :
Il existe un attribut appelé bac à sable qui vaut la peine d'être vérifiée : https://www.w3schools.com/tags/att_sandbox.asp
UPDATE 2 :
Avant de vous prononcer contre les iframes, pensez aux marteaux. Les marteaux sont dangereux. Ils ne sont pas non plus très beaux, il est difficile de nager avec, c'est mauvais pour les dents, et un type dans un film a une fois mal utilisé un marteau, causant de graves blessures. De plus, je viens de faire une recherche sur Google et des tonnes de documents disent que les mortels ne peuvent même pas les déplacer. Si cela ressemble à une bonne raison de ne plus jamais utiliser un marteau, les iframes ne sont peut-être pas votre véritable ennemi. Désolé de m'être égaré.
8 votes
Ça ressemble à un conte de vieilles femmes. La fenêtre de votre navigateur n'est en fait qu'un grand iframe.
1 votes
C'était déjà a demandé sur stackoverflow
2 votes
@Samich - Non, il s'agit des meilleures pratiques, et pas spécifiquement des questions de sécurité (et le seul problème de sécurité auquel je peux penser provient de l'utilisation de l'Internet). des tiers en utilisant des iframes)
0 votes
Ce n'est pas tant la sécurité que le fait que ce ne soit pas considéré comme une bonne pratique : stackoverflow.com/questions/1081315/why-developers-hate-iframes (en anglais) Ils étaient beaucoup plus populaires lorsque les gens concevaient avec des tableaux. Les divs éliminent presque entièrement le besoin d'iframes.
1 votes
Il est amusant de constater qu'un article paru près de dix ans plus tard suggère que le fait de placer tout ce qui contient un formulaire dans une iframe, isolée de tout votre javascript tiers, etc., est peut-être nécessaire pour protéger les formulaires contre la collecte. hackernoon.com/