Friday 28 April 2006, 17:01
Les galigeades du javascript
By Geoffrey - Le saviez vous ? - Permalink
Prenons une page http://foo.example.org/foo.html avec, entre autre, cette portion de code javascript quelque part:
window.open('http://bar.example.org/bar.html');
La page http://bar.example.org/bar.html contenant elle même cet innocent bout de code:
alert(window.opener.location.toString());
On obtient une chouette Exception: Permission denied to call Location.toString(). Tout ça parceque les deux pages ne sont pas sur le même domaine. C'est frustrant non ?
8 comments
Frustrant, mais permettant de réduire (un peu) la liste des failles de sécurité sur un site :-)
Juste une question bête de non (encore) developpeur : on voit souvent dans des exemples "foo" et "bar". Pourquoi ? c'est l'equivalent anglais de truc et toto, ou ça à une explication ? Trouve pas dans le dico en tout cas
une matinée pour ca ! ;)
Frustrant, Oui et Non !
Qu'empecherait un script malicieux de récuperer l'URL de la fenêtre parente et de l'utiliser à des fins pas très louable ?
D'un autre coté, pour afficher l'url de la page parente, il reste tjs le référant :D
Tu pourrais simplifier en opener.location au lieu de window.opener.location.toString(). Merci javascript ! ;-)
Thomas: oui c'est ça: en.wikipedia.org/wiki/Foo... :)
Jerr: je suis curieux de connaitre le genre de fins pas très louables qu'on peut avoir avec un simple referer (soit dit en passant, c'est justement a cause d'un referer non setté que j'ai eu besoin de ça, donc bon) :/
Hello,
Ya moyen d'outrepasser ce genre de limite en signant tes scripts. Bon là c'est sur çà devient tout de suite une prise de tête, mais surtout une dépense car il faut faire 'aquisition d'un certificat.
Une fois signé, sous moz on peux faire:
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
Ce qui permettra d'accéder à ce genre de variables.
Voir: www.mozilla.org/projects/...
Matt
Ce n'est pas un problème de sécurité à proprement parler, plutôt un problème de protection de la vie privée (privacy). Enfin, je pense.
Et si tu utilises location.href, ça marche ?
This post's comments feed