Existe-t-il un moyen de restreindre ce qu'un iframe est autorisé à faire dans le parent? Ce que je cherche est un Javascript modèle de sécurité entourant qui ressemble à:Comment prévenir les attaques CSRF/XSRF impliquant des iframes intégrés?
...
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
function AllowedToAccess()
{
}
function NotAllowedToAccess()
{
}
</script>
<security>
iframe {
Deny All;
Allow javascript:AllowedToAccess();
}
iframe script.untrusted {
Deny All;
}
</security>
<iframe src="trusted.html"></iframe>
<iframe src="http://www.somesite.com/trusted.html"></iframe>
...
« apparence de trusted.html comme:
<html><body>
<script type="text/javascript">
function InternalCall()
{
window.parent.AllowedToAccess();
}
function InternalCall2()
{
window.parent.NotAllowedToAccess();
}
</script>
<security>
javascript:window.parent {
Allow javascript:document.body.offsetHeight;
Allow javascript:document.title;
}
script.untrusted {
Deny All;
}
</security>
<script type="text/javascript">
window.parent.AllowedToAccess();
InternalCall();
</script>
<script type="text/javascript" src="http://www.anothersite.com/untrusted.js" secclass="untrusted"></script>
<script type="text/javascript">
window.parent.NotAllowedToAccess();
InternalCall2();
window.parent.jQuery(window.parent.body).append('<div id="badid"></div>');
window.parent.jQuery('#badid').load('SomethingIShouldnt.php');
</script>
</body>
</html>
et 'deux regards SomethingIShouldnt.php' comme:
NotAllowedToAccess();
Et 'untrusted.js' ressemble à:
window.parent.AllowedToAccess();
InternalCall();
window.parent.NotAllowedToAccess();
InternalCall2();
window.parent.jQuery(body).append('<div id="badid"></div>');
window.parent.jQuery('#badid').load('SomethingIShouldn't.php');
(Euh ... désolé d'aller trop loin.)
Vous remarquerez la balise 'security' inexistante dans le code HTML. Je pensais à quelque chose dans le genre des déclarations CSS selector-ish avec une syntaxe de sécurité semblable à Apache mélangée pour définir des règles. (Je n'ai pas utilisé les règles window.parent, mais j'espère que les navigateurs qui bloquent les scripts inter-sites ont une solution de contournement décente, ce qui est assez frustrant - "Je fais confiance à la fenêtre parent pour accéder uniquement à la hauteur de ma fenêtre le titre"). J'espère que quelque chose comme ceci existe déjà sous une certaine forme (même une ébauche spec). Mais j'ai peur que la réponse soit "non".
Cela peut-il être fait (même partiellement)? Si non, alors à qui dois-je parler pour que quelque chose de ce genre soit implémenté (Comité de normalisation ou implémenteurs de navigateurs)? En supposant, bien sûr, cela a même un sens?
L'écriture d'exploits est le seul moyen de prouver qu'un système de sécurité est protégé contre les attaques. Un système de sécurité est dangereux jusqu'à ce qu'il a été prouvé pour vous assurer la sécurité. – rook