2016-04-29 9 views
2

私は、自分の電子メールに送信されたリンクをクリックして、フォームを登録(例えばregister.php)して登録を完了させる。フォームphpでセキュリティをサブミットする

私はregister.phpでフォームの送信時にチェックを持っている:

if(isset($_POST['submitted']) and $_SERVER['REQUEST_METHOD'] == 'POST') { 
    //register user in database 
} 

私の質問は:誰かが技術的には簡単に$ _POSTでカスタムHTTP POSTリクエストを作成することで、この正式な登録プロセスを回避することができ[「提出」 ]セット?もしそうなら、これを確認する良い方法は何ですか?私は不正な方法で登録ページにアクセスしようとしている人のチェックを受けていますが、誰かのように感じます。ページへの投稿は十分安全ではありません。もし私がHTTPSを使うことに決めたら、これについて心配する必要はありますか?私はこれが理にかなってほしい。前もって感謝します。

+0

をインストールすることです。彼らがリンクをクリックすると、あなたのホワイトリストにトークンがあることを確認します。 –

+0

誰かが技術的に迂回する可能性があります_...: - はい。 _これは良い方法ですか?_: - ランダムなトークンを生成し、電子メールで送信して確認します。 _私はHTTPSを使用することに決めましたか?_: - これとは何が関係していますか? – Federkun

+1

はい、誰でもカスタムフォームを作成してどこからでも実行できます。彼らが必要とするのは、 '

'というhtmlです。ブーム...あなたのものからどこからでも発信したことなく、あなたのサーバーに投稿を投稿してください。 –

答えて

5

あなたが説明する問題は、クロスサイトリクエスト偽造と呼ばれます。トークンを生成し、そのトークンに隠れた入力の値を設定することで、攻撃を防ぐことができます。また、セッション変数をトークン値に設定します。投稿データを受け取るPHPフォームで、セッショントークンと送信されたトークンが一致するかどうかを確認します。一致した場合、フォームはサイトから取得されました。

クロスサイトリクエスト偽造の防止の詳細については、How to prevent Cross-site request forgery (CSRF) effectively in PHPを参照してください。

0

ベストな方法は、あなたはいつもあなたが電子メールの受信者に送信する前に生成され、保存したクエリ文字列にランダムなトークンを追加することができますキャプチャ

https://www.google.com/recaptcha/intro/index.html

関連する問題