私はこの設定をしています:送信ボタンのあるHTMLフォーム->ボタンがjqueryで押されたかどうかを確認-> $.post
(jquery)を介してphpページに入力を送信します。
誰かが実際に HTML フォームのボタンを押したかどうかを php コードで確認するにはどうすればよいですか? ユーザーがフォームを経由せずに $_POST 値を php ページに送信できないようにしたいと考えています。
私は次のことをします:
トークンは、何をしたいかによって、DB またはセッションのいずれかに保存できます。
あなたは基本的にCSRFから守りたいと思っています。GGio が言ったように、セッションベースのトークンはこれを達成するための最良の方法です。
if (!isset($_SESSION['token'])) {
$token = sha1(uniqid(rand(), true) . $_SESSION['user_id']);
$_SESSION['token'] = $token;
$_SESSION['token_time'] = time();
}
else{
$token = $_SESSION['token'];
}
あなたのフォーム要素で:
<input type = "hidden" name = "token" value = "<?php echo $token; ?>" >
フォームを処理する前に:
if(isset($_SESSION['token']) && isset($_POST['token']) && $_POST['token'] === $_SESSION['token']){
//user submitted the form correctly
}
else{
//something isn't right
}