Permettre à iFrame HTTP d'appeler JavaScript sur le cadre parent HTTPS

J'ai une https ( https://example.com/main.php ) qui a un iframe avec une source non-https ( http://example.com/inner.php ). Les deux fichiers sont sur le même serveur – un seul est accessible avec https et l'autre n'est pas. J'ai besoin de la page non-https pour pouvoir exécuter javascript sur la page https main.php utilisant un code tel que parent.myfunction()

Cependant, lorsque j'essaie, j'obtiens l'erreur suivante:

La tentative de JavaScript dangereuse d'accéder au cadre avec l'URL https://example.com/main.php à partir du cadre avec l'URL http://example.com/inner.php . Les domaines, les protocoles et les ports doivent correspondre.

J'ai défini document.domain = 'example.com' sur les deux fichiers et je pensais que cela le réparerait, mais ce n'est pas le cas. Existe-t-il un moyen d'autoriser l'image à exécuter des javascripts sur le cadre parent et vice versa? Dans l'affirmative, quelles sont les implications pour la sécurité?

PS: Pour ceux d'entre vous qui proposeront simplement d'utiliser https ou http pour les deux pages, je me penche sur cela. Cependant, en raison des processus survenus dans la page iframe, cela pourrait ne pas être une option possible en raison de problèmes de charge du serveur.

La «Politique de la même origine» couvre le protocole («http» ou «https»), le nom d'hôte et le numéro de port. Tous ceux qui doivent correspondre ou vous perdez.

Si votre chargement du serveur serait vraiment affecté par l'application du cryptage à la page <iframe> , je pense que vous avez d'autres problèmes beaucoup plus sérieux. En ce jour et l'âge qui ne devrait vraiment pas être un problème. Si vous avez un site de trafic massif, vous devriez probablement utiliser un front-end pour faire le SSL de toute façon.

S'il était possible de faire ce que vous demandez de faire, aucun site sécurisé SSL ne serait jamais sécurisé.

Permettez-moi de décrire le problème. Disons qu'un utilisateur, Alice, va accéder à son compte sur Paypal.com. Je, Mallory, je suis entre Paypal et Alice. Lorsque Alice accède à Paypal, j'intercepte sa demande et renvoie une page contenant deux choses: une image avec https://paypal.com , et une contenant une page prétendant être « http://my.paypal.com », que j'ai Je me suis fabriqué. Le cadre HTTPS valide bien car il est effectivement venu de Paypal. La trame HTTP contient un Javascript de mon appareil qui entrera dans le cadre HTTPS, et lorsque Alice entrera son mot de passe, il me l'enverra!

Donc non, il n'est pas correct d'accéder au contenu sécurisé à partir d'un contenu non sécurisé, même sur le même domaine.

Vous ne pouvez pas faire un accès multi-domaine / cross-protocol / cross-port avec JavaScript. Ceci est connu sous le nom de «script de domaine croisé», ce qui est un problème puisque, sans sécurité comme celle-ci, je pourrais ouvrir GMail dans un iframe, obtenir les boîtes de texte «u» et «p» et avoir les informations de connexion d'un utilisateur comme celle-ci.

Ce que vous avez mis dans votre PS est la seule solution réelle que vous pouvez utiliser, en plus d'utiliser un serveur echo … ce qui serait une overkill.