フィードバック フォームをより安全にするために、http://phpsec.org/projects/guide/2.htmlを確認しました。私の非常に限られたスキルで、次のようなものを思いつきました:
form.php (フォーム) と form-processing.php (送信に使用されるスクリプト) があるとします。form.php の冒頭:
<?php
session_start();
$token = md5(uniqid(rand(), true));
$_SESSION['token'] = $token;
...そして、フォーム自体の冒頭で、トークンを非表示フィールドにエコーします。
<form method="POST">
<input type="hidden" name="token" value="<?php echo $token; ?>" />
form-processing.php の冒頭:
<?php
session_start();
if (isset($_SESSION['token']) && $_POST['token'] == $_SESSION['token'])
{
}
else {
die( "Invalid token" );
}
これは安全に仕事をするでしょうか?