1

ユーザーが説明や画像などを含む製品を追加できるphp Webサイトを開発しています。POSTメソッドを使用してユーザー入力を受け取っています。しかし、ユーザーがフォームの入力名とフォームのアクション リンクを知っている場合、JavaScript を使用して一定のリクエストを送信し、データベースを妨害することができます。

したがって、POST リクエストの送信元から URL を取得できれば、それを防ぐことができます。POST リクエストが自分のサイトの URL からのものである場合にのみ、情報をデータベースに入力できました。

この攻撃はキャプチャを使用しても防止できることはわかっていますが、主にキャプチャが苦痛であるため、別の方法が必要です。

キャプチャを使わずにそれを行う方法はありますか? おそらくセッション?

4

3 に答える 3

0

以下に対してチェックできます。

$_SERVER['HTTP_REFERER'] 

可変ですが、これは改ざんされる可能性があるので注意してください。

挿入を行うには、設定されたフィールドと同じでなければならない値に設定されたいくつかの隠し入力を使用する方がよいでしょう (この手法の名前は現時点ではわかりません)。

すなわち

<input type="text" id="areyouhuman" name="areyouhuman" value="123456001" />

CSS で非表示にします。

#areyouhuman{
     display:none;
}

それが少し役立つことを願っていますか?

PS私もキャプチャが嫌いです!

于 2013-10-11T16:09:51.963 に答える
0

おそらく、フォームにセキュリティを提供する最善の方法は、フォームに CSRF トークンを追加することです ( http://en.wikipedia.org/wiki/Cross-site_request_forgery )。

どのように機能するかは、フォームをレンダリングするたびに疑似乱数コードを生成してセッション変数に保存し、同じコードを非表示の入力としてフォームに配置することです。

したがって、ユーザーがフォームを投稿すると、csrf トークンが同じかどうかを検証できます。

これについては別のスレッドがあるので、それを参照してください ( PHP を使用して CSRF トークンを適切に追加する方法) 。

于 2013-10-11T16:20:21.530 に答える