シナリオ:
clientWebsite は、ユーザーがセキュリティ カードを PC に挿入している場合にのみアクセスできます。ClientWebsite は、セキュリティ カードを使用して行うすべてのことと同様に、私の管理外です。
ユーザー名/パスワードを必要とする js Web アプリを開発しました。システムはセキュリティ トークンを要求し、提供された資格情報が有効な場合、トークンが返され、url パラメーターとしてすべての要求に追加されます。トークンは 60 分間有効です。
ClientWebsite のシステム管理者は、保護されたサイトに私の js アプリへのリンクを配置したいと考えています。誰かが ClientWebsite を表示できる場合、彼らは私の js アプリを表示することが許可されており、リンクをたどった後、再度ログインする必要はありません。
サーバー上のページを指すテスト リンクをシステム管理者に挿入してもらい、js/jquery を実行して http リファラーを取得しましたが、常に空白でした。結論 -- クライアントのブラウザでリファラーが無効になっているか、リファラーの送信を無効にするように ClientWebsite が構成されている可能性があります。驚くことではありませんが、これは控えめに言っても非常に安全なサイトです。
ClientWebsite を離れる前に、ajax/php を介してセキュリティ トークンを簡単に要求できます (ClientWebsite に配置するコードをシステム管理者に提供します)。このメソッドは、php スクリプトでハードコードされた資格情報を使用し、リンクにトークンを返す/追加して、js アプリに到達したときに使用できるようにします。次に、js アプリはトークンの有効性をチェックし、OK の場合、js アプリでのログインが抑制されます。
問題:
誰かが ClientWebsite からの ajax 呼び出しを c/p し、それを ClientWebsite の外で実行し、トークンを取得し、それを使用して私の js アプリにアクセスできる他の誰かにトークンを渡すことができます。
質問:
PHPスクリプトでリファラーをチェックし、リファラーがClientWebsiteと一致する場合にトークンを発行したいのですが、リファラーが送信されておらず、リファラーがスプーフィングされる可能性があります。トークンのリクエストが実際に ClientWebsite ページから来ていることを確認するために、他にどのような方法を使用できますか?
ありがとう!!
編集:
システム管理者に ajax 呼び出しを次のように提供します。
$('#jsAppLink').click(function(e){
e.preventDefault();
var currentHref = $(this).attr('href');
$.ajax({
"type":"post",
"dataType": "jsonp",
"url": "https://mydomain.com/getTokenUsingCurl.php",
"success": function (returnData){
newHref = currentHref + "?token=" + returnData.token;
window.location = newHref;
}
})
})
onClick、サーバー上の php スクリプトが照会されます。このスクリプトには、ハードコードされた資格情報が含まれています。公共の場から。トークンを ClientWebsite に返し、それを js アプリの URL に追加してから、リンクをクリックしてユーザーを js アプリにルーティングします。