2009-07-22 14 views
1

私は、ASP.NETアプリケーションを実行しているクライアントを持っています。その中には、自己完結型のPHP wikiがあります。問題は、wikiが.NET認証を使用しないため、直接http://foobar/path/wiki/へのリクエストが強制的にログインすることなく解決されることです。JavaScriptなしでPHPでフレームを検出していますか?

私の単純な解決策は、認証を強制する.aspxファイルからPHPアプリケーションをiFrameで実行し、PHPを使用してページがフレーム外に読み込まれているかどうかを検出し、そうであればリダイレクトすることです。

これはJavaScriptで非常に簡単に行うことができますが、Wikiコンテンツが読み込まれる前にこのテストをサーバー側で行うことをお勧めします。私はこれができる方法を考え出すのに助けが必要です。おそらく紹介者の比較?

提案がありますか?

ありがとうございます!

答えて

4

クライアントのブラウザがフレーム、タブ、または専用ウィンドウ内のページを読み込んでいるかどうかをサーバー側で確認する方法はありません。

あなたができることは、PHPアプリケーションが読むことを認証した後で.NETアプリケーションにCookieを設定させることです。クッキーが存在しない場合は、認証ページにリダイレクトしてください。

+0

クッキーの存在を確認するだけでは不十分です。ページが認証されたことを要求するクライアントを判断する方法が必要です。私がクッキーの名前を知っていれば、認証なしでwikiにアクセスできます。 –

+0

ありがとうございました。私は自分の答えを更新しました。それは私が意味したことですが、私はそれが初めてではなかったと思います。 – matpie

+0

@sirlancelot:より一般的には、実際のWebブラウザの前に座っている実際のユーザがページを要求しているかどうかをサーバ側で確認する方法はありません。これらのタイプの意思決定を試みるために、サーバー上のクッキーやユーザーエージェントの文字列に依拠することは危険に満ちています。 –

1

JavaScriptでも、これは安全ではありません。単純にWikiページを要求し、JavaScriptを無視することができます。たとえば、WGETを使用して、認証せずにすべてのコンテンツをプルダウンすることができます。

セキュリティが重要な場合は、PHPアプリケーションに認証を認識させる方法を見つけることを強くお勧めします。

最も簡単なアプローチは、これがすべて1台のサーバーにある場合、認証後に.NETアプリケーションに何らかのトークンを格納させることです。その後、PHP wikiが受け取るクッキーを設定し、その値が各リクエストの有効なセッションであることを確認します。

関連する問題