2016-04-25 33 views
1

他の質問と同様の質問かもしれませんが、これまで私の質問に答えたものは見つかりませんでした。リダイレクト前に安全な接続が確立されていることを確認してください

状況:ユーザーが私のウェブサイトhttp://www.example.comにいます。 https://secure.example.org

リダイレクトが発生する前に、クライアントが実際に安全な接続を確立できるかどうかを確認する必要があります。 (リダイレクト中にサーバー側か、リダイレクト前のAJAX要求、またはその目的に役立つもの)のいずれかを指定します。

これはまったく可能ですか?それはどのように行われますか?どのようにそれを行う上で任意の好み?

答えて

1

ブラウザが安全にhttps://secure.example.orgに接続できない場合、ブラウザは接続できません。

あなたはいつでもAJAXリクエストを行うことができますが、成功または失敗は実際のリクエストの成功をあまり示しません。 (それはクロスドメインなので、CORSヘッダーを追加する必要があります)。

しかし あなたの現在の構成は安全でない設計である:あなたの最初のページでHTTPを使用し、 攻撃者は、彼が望んでいる何もして、安全なページにあなたのリンクを置き換えることができますので。

最初のページにhttpsを追加すると、何もする必要はありません。ブラウザは安全なチェックを行います。

セキュリティを向上させるには、HSTSも検討する必要があります。

可能であればhttpsにリダイレクトするには、httpウェブページの先頭に、httpsウェブサイトへのリダイレクトを含むhttps urlを含むjavascriptファイルを含めます。ユーザーはhttpsをサポートしている場合のみリダイレクトされます。

+0

考えてくれてありがとうしかし、それは私の質問の問題ではありませんでした。私の質問は、ブラウザが安全な接続を確立できるかどうかをチェックすることです。何らかの理由でhttps接続を確立できない以前のブラウザのバージョンで問題が発生しました。話すために「フォールバック」を設定できるようにしたいと考えています。ユーザーがブラウザで生成されたエラーメッセージを表示する代わりに、セキュリティで保護された接続が確立できない場合、別のページにリダイレクトする必要があります。この時点では、機密データは送信されません(実際にはユーザー固有のデータはありません)。 – koljanep

+1

@koljanepできるだけhttpsにリダイレクトする方法を説明します。詳細が必要ですか? – Tom

0

はこのような何か試してみてください(そして、あなたはあまりにもその方法でHSTSを使用することができます):

if(empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == "off"){ 
    $redirect = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; 

ヘッダ( 'HTTP/1.1 301は恒久的に移動します'); header( 'Location:'。$ redirect);

}

+0

ありがとうございますが、これは私の質問に対する答えではありません。 – koljanep

+0

他のオプションを試してみます –

関連する問題