この状況のときに、phpをたたいたのが本当に同一サーバー内からのリクエストであることを、php側から確認する手段はあるのでしょうか。 一度javascript側でmd5暗号キーを作って照らし合わせれば、とか考えたのですがsaltがコード内に載ってしまえば、結局ばれてしまうのであまり意味がないかなと思いました。 何か定石のようなテクニックがあればお教えください。 よろしくお願いいたします。
サーバ証明書を送って電子認証する
普通はクライアント証明書を送るのだが、ご質問の場合はサーバ証明書で代用できるでしょう
これ以上回答リクエストを送信することはできません。制限について
ログインして回答する
コメント(5件)
もちろん万全ではありませんが、費用対効果の意味では現実論的方法です。
これが駄目だとすると、セッションを使っている世の中の全てのサイトは駄目という事になりますが。
コメントありがとうございます。
PHPのセッションというとどういう意味でしょうか。もちろんセッション機能は存じていますが、今回はJavascriptとPhpの間の話で、phpの内部の話ではありません。それともセッションキーを動的に吐き出してあらかじめjsのソース内に仕込んでおくとかでしょうか。
すみません、もう少し細かくお教えいただけると幸いです。
2.js->PHP方向の送信時に、クッキーにセッションキーを乗せて送信する。
3.PHP側でセッションキーを照合する(普通はPHPが勝手にやる筈)。
以上。
もちろんセッションキーは丸裸ですが、通常は閲覧者のみにしか見えず、遠隔の第三者がセッションキーを知るにはスニッフィングするかまぐれ当たりくらいしかありません。
Ajaxにしろ、通常のHTMLフォームにしろ原則は同じです。
これが駄目だとすると、一般的に行われているセッションキーを使ったHTMLフォームの送受も駄目という事になります。
私の知見不足かもしれませんが、JSONPではクロスサイトを防ぐ有効な手段は無く(元々その為の実装なので)、重要なデータのやり取を避けるという消極的回避策しか無いと思っています。
通常のAjax.RequestならSOPが効くので他サイトからデータ取得はできないようになっていると思います。
それともブラウザ側のSOPの実装が信用できないので、サーバ側でもチェックしたいという趣旨でしょうか。
すみません、いろいろ勘違いがあり、tombeさんのおっしゃるセッションキー方式で問題ございませんでした。
どうもajaxになれてないもので全てJSで対処しようとばかり考えて、思考が固まってしまっていました。
お騒がせいたしました><