前提・実現したいこと
PHPで問い合わせフォームにURLの直たたき防止の機能を実装中です。
入力画面(contact.php)⇛確認画面(confirm.php)⇛完了画面(complete.php)という構造でこの順序でしかそれぞれの画面にアクセスできないようにしたいです。
現在confirm.phpにcontact.phpからでしかアクセスできませんというコードを下記のように作っておりますが、URL取得のコードをどのように書くべきかわかりません。
環境に応じた取得方法を記述するにはどのようにするべきでしょうか。
該当のソースコード
ソース// URL直たたき対策 $referer = $_SERVER["HTTP_REFERER"]; $url = 'https://3619dda849484d518eb5fda739e3e87d.vfs.cloud9.ap-northeast-1.amazonaws.com/contact_form/contact/contact.php'; if(!strstr($referer,$url)){ die("正規の画面からアクセスしてください"); exit; }
CSFR対策コード
//POSTされたデータをチェック $_POST = checkInput( $_POST ); //固定トークンを確認(CSRF対策) if ( isset( $_POST[ 'ticket' ], $_SESSION[ 'ticket' ] ) ) { $ticket = $_POST[ 'ticket' ]; if ( $ticket !== $_SESSION[ 'ticket' ] ) { //トークンが一致しない場合は処理を中止 die( 'Access Denied!' ); } } else { //トークンが存在しない場合は処理を中止(直接このページにアクセスするとエラーになる) die( 'Access Denied(直接このページにはアクセスできません)' ); }
補足情報(FW/ツールのバージョンなど)
AWS Cloud9
PHP 5.6.40
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/03 04:43
2020/04/03 05:05
2020/04/03 05:22