私のPHPページにフォームがあります。このページでは、ウィンドウポップアップを開いています。このポップアップにはいくつかのフィールドがあります。私たちはフォームに記入して提出します。フォームを送信した後、私たちはユーザーにメールを送信します。基本的には、ユーザーは彼にメールを送信して友人にウェブサイトの参照を与えることができる形式です。 残念ながら、誰かが私のウェブサイトをハックし、私のPHPスクリプトを使ってメールを送信しています。 したがって、私は外部のサーバーからのPHPスクリプトのアクセスを制限したいと思います。 アクセスを制限するにはどうすればよいですか。 私はいくつかの選択肢を試しましたが、成功しませんでした。異なるドメインからのデータの投稿を防止するPHP
0
A
答えて
1
これを軽減する方法は2つありますが、これを完全に停止することはできません。
使用HTTPリファラー:あなたはHTTP_REFERER値を信頼することはできません
$referer = parse_url($_SERVER['HTTP_REFERER']);
$allowedDomain = 'yourdomain.com';
if ($referer['host'] == $allowedDomain){
//Process your mail script here.
}
注意。簡単になりすますことができます。
使用トークン:
ランダムなトークンを生成し、同様にフォームのPOST中にそれを置く:
if (!isset($_POST['submit'])){
$_SESSION['random_code'] = rand(0, 1000000);
}else{
if ($_POST['random_code'] == $_SESSION['random_code']){
//process your mail script here
//reissue session code
$_SESSION['random_code'] = rand(0, 1000000);
}
}
<input type='hidden' name="random_code" value="<?php echo $_SESSION['random_code'];?>">
保存したセッションで、このランダムコードを。フォームが提出されたら、提出されたrandom_code値をセッションに保存されたコードと一致させます。両方が同じ場合は、メールスクリプトを処理します。
このように、攻撃者はまずページを開いてランダムコードを取得してフォームを送信する必要があります。この攻撃を止めることはできませんが、それは間違いなくプロセスを遅くします。
関連する問題
- 1. 異なるドメインのフォーム経由で投稿データからスクリプトを保護する
- 2. 投稿後のリダイレクトを防止する
- 3. PHPは重複する投稿を防止します
- 4. expressionEngineはページ外からの投稿フォームを防止します
- 5. 投稿から非SSLからSSLドメインへの投稿.htaccess RewriteRule
- 6. ASIHTTPRequest iPhoneからPHPへのデータ投稿
- 7. foreach内の重複する投稿を防止する
- 8. 異なるユーザーからの複数の同時投票の防止
- 9. iOSからPHPスクリプトにデータを投稿
- 10. cakephpコントローラから別のドメインに投稿
- 11. localhostからドメインへの投稿フォーム
- 12. Jquery Ajaxから投稿データを受け取る投稿から
- 13. 複数のajax投稿を防止する
- 14. Facebookでのダブル投稿を防止する方法は?
- 15. ワードプレスフォームの投稿でページリフレッシュを防止する
- 16. 重複したフォームの投稿を防止する
- 17. symfonyの投稿フォームでイベントを防止する
- 18. 投稿時のデフォルトを防止する: - Angularjs
- 19. PHPの投稿データから属性を取得する
- 20. Wordpressのブログ投稿をあるドメインから別のドメインにリダイレクトする
- 21. 異なるドメインでのスクリプトの読み込みを防止する方法
- 22. 他のドメインからのリクエストを投稿する結果TokenMismatchException
- 23. PHPでjqueryの投稿からデータにアクセスするには?
- 24. 投稿データの上限PHP
- 25. JSONデータを別のドメインに投稿する - Rest API
- 26. RequiredFieldValidatorが失敗した場合に投稿を防止する
- 27. phpからapiにデータを投稿するには?
- 28. cURLファイルからデータを投稿する
- 29. 投稿データで別のドメインのURLにリダイレクトする方法
- 30. このJSONデータをPHPでどのように投稿するのですか?異なるこのJSONは
現在メールをどのように送信しているかを示すコードがないと、あまり言い表せません。また、あなたのコードは脆弱ですか、あるいはあなたがサーバー上のメールに使っているものは何ですか?ポストタイトルだけで、CSRFトークンが役立ちます。 –
あなたの機能が電子メールを送信することに基づいているため、あなたが何かできることはないと思います!おそらくあなたは自分のIP(100%安全ではない)でユーザを制限することができますが、あなたのスクリプトを使用する人々を減速させることができます! – Soheyl
クロスドメイン要求を防ぐには、ポストリクエストごとにcsrfトークンを追加する必要があります。詳細はこちらhttp://stackoverflow.com/a/31683058/4584028 –