
Ajax通信の際のphp直アクセス防止について
あるPHPファイルに対して、JavaScript(同ドメイン)からのリクエスには対応して、ブラウザからなどの直アクセスの場合は、アクセスを防止するということは出来るのでしょうか。
$_SERVER["HTTP_REFERER"]や$_SERVER['HTTP_X_REQUESTED_WITH']など、サーバー変数を調査する方法は思いつくのですが、いずれも偽装可能な方法で飾りにしかなりません。そもそも直アクセス防止は理論的にできなくて、phpシステム側を直アクセスされても安全なものにするのが一般的なのかもしれませんが、Ajax通信における基本的なセキュリティのありかたが分かっておらず、参考意見をいただけると幸いです。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
何を心配しているのかがわからないです。
正当な閲覧者が不正を行うという事でしょうか。
それとも途中でパケット覗き見された時という事でしょうか。
下の場合は、SSLなどの通信路の暗号化技術使えばあり得ない(基盤となっている暗号自体が破られれば別ですが)ですね。
質問見ると不思議な事が多く書かれているのですが。
> あるPHPファイルに対して、JavaScript(同ドメイン)からのリクエスには対応して、ブラウザからなどの直アクセスの場合は、アクセスを防止するということは出来るのでしょうか。
同ドメインからのリクエストがあるのですよね。
『ブラウザからなどの直アクセスの場合』というのは同ドメインではないのですよね。
閲覧者へ送信しているJavaScriptに同ドメインからのリクエストと同じコード入れなければいけない訳でもなさそうに感じたのですが。(そもそもサーバ内の通信については公開しない様にもできそうに思えますが)
事情があり、できないにしても内部の通信はポート8080を使って外部に対してはパケットフィルタで遮断して良さそうにも思えます。
サーバ内でのパラメータ渡しなら公開しているIP通信使わなくても、Unixドメインソケット使ったりいくらでも方法ありそうにも感じますし。
私には質問が理解できません。(どんな対処不能な問題があるのか)
この回答への補足
私の質問の意図がわからない、というのは理解できました。ありがとうございます。おそらくそれは、決定的に私の知識が不足しているからだと思います。私が質問してる内容は、パケットを盗聴するまでのことではありません。具体的に書いてみます。
たとえば、いくらJS内で情報を隠蔽しようとも、Firebugなどのツールを使えば、送信先PHPのパス、データの内容、リクエストの種類などは簡単にのぞき見できます。まずこれが一つめです。そして、PHPに対して、JSからのリクエストを許可するということは、ブラウザからのリクエストを許可することと同義だと思っていること。(正確にはわかりません。)
もし、仮にこれらのことが同時にあったとすると、外部ドメインから、内部リクエスト(リクエストの種類、リファラー、クライアント属性やデータそのもの)を模倣された場合、どのように防ぐか、というのが今回の質問です。
同ドメイン内のPHPとPHPの通信のように、JSとPHPの通信が、同サーバー内での通信と解釈できるのであれば、今回の私の質問は見当違いなものです。ただその場合、PHPもしくはApacheが「これは同ドメインJSからのリクエストだよー」と判別できる手段をいただけると、とても嬉しいです。
No.2
- 回答日時:
基本中の基本だけどPHP側で受け取ったXMLのデータが正当なデータか検証処理をしっかりやる。
この回答への補足
回答ありがとうございます。
そうですよね。おっしゃるとおりだと痛感します。
ただ、Ajaxだと通信しているデータがダダ漏れなので、簡単にデータを真似できちゃうという点で、たとえば、クライアントやリファラーを偽装して送信データを真似されると、外部プログラムからのリクエストに簡単に応えてしまうのではないかと。その点、Ajax初心者でよくわからないのですが、そういった場合に、みなさんはどのような対処をされているのか疑問に思い、質問いたしました。
JavaScriptからの送信データを暗号化(人目に判別できなく)すれば、データの偽装は多少難しくなるかもしれませんが、いずれにしても暗号処理が丸見えのJavaScriptに依存する限り、あんまり意味ないのかなあ、と思ったりしています。
No.1
- 回答日時:
ajaxで呼び出せるものはしょせん偽装できそうな気がしますが・・
セッションをうまく使えば精度をあげられるかもしれませんね
この回答への補足
> ajaxで呼び出せるものはしょせん偽装できそうな気がしますが・・
ということは、やっぱり直アクセスを防止しようとすること自体が不毛なのでしょうか。
> セッションをうまく使えば精度をあげられるかもしれませんね
そうですね。セッションを確固たるセキュリティと信頼すれば、Ajaxアクセスの都度、セッションを調査する方法もありますね。ただ、この方法だとAjaxの実装によってはセッション処理が忙しくなっちゃうかもしれませんね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpのheader("Location:#pos")...
-
PHP8でWarning:Undefined varia...
-
フォームで戻った際に入力済み...
-
csvファイルについて教えて下さ...
-
セッション関数を使わずにファ...
-
composerをインストールしたい...
-
SplFileObject を利用したとき...
-
PHPSpreadsheetによる書き出し...
-
phpの問い合わせフォームを作っ...
-
marginの値でマイナス値を設定...
-
submitで思うようにページが遷...
-
HTML PHP ラジオボタンのイベント
-
php でqiitaのサイトにあったフ...
-
PHPの勉強してます。 配列のと...
-
BASIC認証のフォームをデザイン...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
-
返信機能のツリー構造の深さを...
-
PHPについて。
-
PHPからCSVをアップロード後、m...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Exprってなんて読んでますか?
-
同じディレクトリに異なるドメ...
-
カードの不正利用疑惑の対応に...
-
知恵袋に似たサイトはどこですか?
-
ヤフーは不親切! ログイン再認...
-
おすすめのグロサイトを教えて...
-
二段階認証でメールやSMSをどう...
-
【SBI証券】パソコン使うたびデ...
-
LINEがおかしい…… LINEを使おう...
-
AOLメールについて ログインす...
-
Xの垢を作る時に、認証って今で...
-
Google Chromeの更新しようとし...
-
サイトにアクセスしただけで個...
-
Yahoo!メールがクソすぎるので...
-
中学生でもまねきねこの会員に...
-
証明書による無線LAN認証(802.1...
-
楽天証券乗っ取り、テスター氏...
-
学校のChrome Bookのロック解除...
-
Excel2013 WEBSERVICE で #VAL...
-
至急お願いします!! LINEユー...
おすすめ情報