Cette question était auparavant asked and answered correctement, mais il ne semblait pas y avoir de solution postée.Fracture de trame uniquement inter-domaine mais pas pour les iframes de la même origine?
Si un site a iframes, et veut empêcher ceux d'être enfermé dans un cadre d'un autre domaine, cadre busting simpliste ne sera pas utile:
<script>if (top != self) top.location = location</script>
Cependant, depuis les scripts inter-cadres à d'autres domaines devraient générer des exceptions, quelque chose comme cela semble bien fonctionner à l'intérieur de l'iframe:
<script>
try {
if (window.document.domain != top.document.domain) { // throws exception
throw "You naughty puppy!"; // Should not ever get here, right?
}
}
catch() {
top.location = "/error/naughtypuppy";
}
</script>
le if
ci-dessus devrait être assez seul pour empêcher le cadrage inter-domaines des iframes. Il devrait seulement retourner false
ou lancer une exception, alors de toute façon le script pourrait atteindre l'instruction throw
dans un navigateur?
Est-ce que cela suffirait à empêcher le tramage uniquement à partir d'autres domaines?
<script>
try {
var bogus = top.document.domain;
}
catch() {
top.location = "/error/naughtypuppy";
}
</script>
Edit: Une solution similaire est fait allusion ici, mais on ne se baserait pas sur le cadre parent d'inclure le code de cadre busting. Detect when iframe is cross-domain, then bust out of it. Essentiellement la même solution que "essayer d'accéder à l'autre image et bust si une exception se produit."
Ah, il y a une réponse déjà: http://stackoverflow.com/questions/2365822/detect-when-iframe-is-cross-domain-then-bust-out-of-it – jbindel
La réponse dans mon commentaire précédent ne serait pas exactement travailler cependant. Le code malveillant ne va pas inclure 'onload =" checkForCross() "' quand il charge le cadre, il serait donc préférable d'inclure la fonction checkForCross sur la page child.html plutôt que sur le cadre parent. – jbindel
Je suppose que je vais considérer ma solution la bonne, alors. – jbindel