Ajaxで非同期通信して同一サーバー内に置いてあるphpをたたいて、返ってきた文字列を表示するというものを作っています。

この状況のときに、phpをたたいたのが本当に同一サーバー内からのリクエストであることを、php側から確認する手段はあるのでしょうか。
一度javascript側でmd5暗号キーを作って照らし合わせれば、とか考えたのですがsaltがコード内に載ってしまえば、結局ばれてしまうのであまり意味がないかなと思いました。
何か定石のようなテクニックがあればお教えください。
よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:2010/02/07 17:00:25
  • 終了:2010/02/07 20:05:58

回答(1件)

id:km1967 No.1

km1967回答回数541ベストアンサー獲得回数402010/02/07 18:23:36

ポイント60pt

サーバ証明書を送って電子認証する

普通はクライアント証明書を送るのだが、ご質問の場合はサーバ証明書で代用できるでしょう

  • id:tombe
    普通にPHPのセッション機能を使うのでは駄目?
    もちろん万全ではありませんが、費用対効果の意味では現実論的方法です。
    これが駄目だとすると、セッションを使っている世の中の全てのサイトは駄目という事になりますが。
  • id:n_maco2
    > tombeさん

    コメントありがとうございます。
    PHPのセッションというとどういう意味でしょうか。もちろんセッション機能は存じていますが、今回はJavascriptとPhpの間の話で、phpの内部の話ではありません。それともセッションキーを動的に吐き出してあらかじめjsのソース内に仕込んでおくとかでしょうか。
    すみません、もう少し細かくお教えいただけると幸いです。
  • id:tombe
    1.セッションキーをHTMLのhiddenタグに埋め込むか、Javascriptのコード内に埋め込む。
    2.js->PHP方向の送信時に、クッキーにセッションキーを乗せて送信する。
    3.PHP側でセッションキーを照合する(普通はPHPが勝手にやる筈)。
    以上。

    もちろんセッションキーは丸裸ですが、通常は閲覧者のみにしか見えず、遠隔の第三者がセッションキーを知るにはスニッフィングするかまぐれ当たりくらいしかありません。
    Ajaxにしろ、通常のHTMLフォームにしろ原則は同じです。
    これが駄目だとすると、一般的に行われているセッションキーを使ったHTMLフォームの送受も駄目という事になります。
  • id:mystashes
    それほどクロスサイトを気にされるということはJSONPでしょうか?
    私の知見不足かもしれませんが、JSONPではクロスサイトを防ぐ有効な手段は無く(元々その為の実装なので)、重要なデータのやり取を避けるという消極的回避策しか無いと思っています。
    通常のAjax.RequestならSOPが効くので他サイトからデータ取得はできないようになっていると思います。
    それともブラウザ側のSOPの実装が信用できないので、サーバ側でもチェックしたいという趣旨でしょうか。
  • id:n_maco2
    皆さんコメントありがとうございます。
    すみません、いろいろ勘違いがあり、tombeさんのおっしゃるセッションキー方式で問題ございませんでした。
    どうもajaxになれてないもので全てJSで対処しようとばかり考えて、思考が固まってしまっていました。

    お騒がせいたしました><

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません