8

わかりましたので、私がする必要があるのは、リモート サイトからのログイン画面を iframe に配置できるようにすることです。ログイン ボタンをクリックすると、リモート サイトにログインし、ローカル ページがページ 2 に変更されます。これが私が持っているものです。これまでのところ、それは非常にわずかです。これが不可能な場合、情報をリモート サイトに渡して Cookie を取得し、次のローカル ページをロードするローカル ログインを作成できますか?

<html>
<head>
    <title>
    </title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" >
    <style type="text/css">
    #outerdiv
    {
        width:400px;
        height:360px;
        overflow:hidden;
        position:relative;
    }

    #inneriframe
    {
        position:absolute;
        top:-125px;
        left:-802px;
        width:2000px;
        height:2000px;
    }
    </style>
</head>
<body>
    <div id='outerdiv'>
        <iframe src="http://www.99designs.com/login" name="myiframe" id='inneriframe' scrolling=yes></iframe>
    </div>
</body>
</html>
4

1 に答える 1

7

多分無理…

Same origin policyローカルとリモートの間のホストが異なるため、これはおそらく不可能です。そのため、すべてのブラウザーが採用しているにより、JavaScript は iframe コンテンツへのアクセスを許可しません。

http://en.wikipedia.org/wiki/Same_origin_policy

これを達成できる唯一の方法は、他のサイトが XSS 保護を採用しておらず、そのサイトへのログイン URL を直接取得/投稿できる場合です。それは誰が何を管理するかにかかっています... ローカル サイトとリモート サイトの両方を所有し、管理している場合、それは可能になります。そうでない場合は、その可能性は低く、あらゆる種類の問題が発生する可能性があります(つまり、リモート サイトがログインの動作方法を変更すると、システムが壊れたり、ログイン/ログアウト プロセスを細かく制御できなくなったりする可能性があります)。可能であるため、独自のエラー処理を実装することはできません)

私が言いたいのは、XSS の脆弱性に頼るべきではないということです。

なぜこの種のものは保護されているのですか?

考えてみれば、上記が当てはまらない場合、あなたがサイトを閲覧している間に、悪意のある人々がバックグラウンドで行うことができる非常に強力で恐ろしいことがたくさんあるでしょう. たとえば、JavaScript を使用してホスト間で非表示の iframe に通信できる場合、Facebook に移動し、ブラウザーに保存されたユーザー名とパスワードに依存してログインし、投稿/削除を開始する隠しスクリプトを誰かがコーディングするのを止めることはできません。 / 友達から離れて... (これは、クレジット カードの詳細や政府の Web サイトを含まない穏やかな例にすぎません)

その他のオプション?

これらの方針に沿って何かを実装するための最善の策は、php、asp、java、node.js、ruby、lisp、perl、または python などのサーバー側スクリプト言語を使用することです。スクリプト言語には、外部リソースの操作に関して制限がない傾向があります。繰り返しになりますが、外部サイトがシンプルまたはオープン ソースのログイン システムをサポートしている限り、JavaScript がサーバー側スクリプトを AJAX 経由のプロキシとして使用してログインすることを許可するよりも、何かを組み合わせることができるはずです。たとえば、PHP 経由で cURL を使用して外部サイトに投稿し、そのサイトが返す Cookie を取得できます。ただし、これは簡単なプロジェクトではなく、問題なく機能させるにはかなりの作業が必要です。

于 2012-09-10T18:15:43.463 に答える