PHP5のセキュリティの質問です。



ユーザーに文章を書いてもらって、それをDBに保存するシステムを作りたいです。(掲示板・ブログ等)write.phpにフォームがあってそこでユーザーに文章を書いてもらい、そのデータをPOSTでsql.phpに送ってDBに登録するとします。


とある書籍に以下のような事が書いてありました。

「悪意のあるクラッカーがwrite.phpを介さないで別のドメインから直接sql.phpにデータを送り続けるような事があるので、それを防がなくてはならない」

これを防ぐにはどのようなセキュリティ対策を施せばいいでしょうか。XSSやインジェンクションについてはきちんと対策すると仮定して、上記のセキュリティ対策のみ教えていただきたいと思います。


POSTされたデータがwrite.phpから送られたかどうかを判別すればいいんだと思うのですが、偽装するのも簡単なような気がします。どなたかよろしくお願い致します。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2007/08/05 07:46:26
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:kn1967 No.1

回答回数2915ベストアンサー獲得回数301

ポイント25pt

セッション開始時に暗号キーを生成し、それを鍵として使う。

  ↓

そんなのは面倒だからSSLを使う。

  ↓

コストを抑えたければ共用SSLの使えるサーバーを選択。

共用SSLであれば利用開始までの面倒な手続きや設定も不要。

id:tokyosmash

SSLは旧ジオトラスト(現グローバルサイン)ならそんなに高くないですね。ただ個人で、となると別問題ですが。勉強と趣味を兼ねてローカル内で作っているもので実際に公開するつもりは無いので、とりあえずセッションを使ってみようと思います。

回答ありがとうございました。

2007/08/05 07:45:48
id:b-wind No.2

回答回数3344ベストアンサー獲得回数440

ポイント40pt

@IT:「ぼくはまちちゃん」 ――知られざるCSRF攻撃

そういうのは CSRF と言います。


基本的な考え方は「正規のフォームから投げられたかどうかをチェックする」と言う事に尽きます。

はてなキーワードからのリンクにも色々と対策方法が載っています。

CSRFとは - はてなダイアリー

id:tokyosmash

>CSRF

キーワードを示していただいてありがとうございます。CSRFという単語はたまに見かけていたのですが、こういう事だったのですね。後は自分で調べられると思います。情報ありがとうございました。

2007/08/05 07:39:33
id:KUROX No.3

回答回数3542ベストアンサー獲得回数140

ポイント25pt

こういうことがあるということです。

http://www.atmarkit.co.jp/fsecurity/column/ueno/33.html

対策としては

・Cookieを使ったセッションの追跡

・リファラーで発信元をチェック

・チェックコードを利用

あげられてます。

実際問題としては、

セッションIDににたチェック用のコードをPOSTデータに埋め込む

というやり方が多いと思います。

5分以内しか有効でないチェックコード(文字列)です。

そのチェックコードがあっていない場合は、5分以上たったか

外部から不正にアクセスされたと判断します。

id:tokyosmash

mixiですら対策していなかったというのが驚きです。当時はまだ珍しい攻撃方法だったのでしょうか。

回答ありがとうございます。これからセッションを実装してみようと思います。

2007/08/05 07:41:59

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

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

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

回答リクエストを送信したユーザーはいません