私はこのブログ投稿とこのスタック オーバーフローの投稿を読んでいますが、フォーム フィールドのハッシュの経験があまりありません (ハニーポットの部分、Web には多くの例があるようです)。そこでいくつか質問があります。
質問1
それはこのようなものですか、それとも私はベースから外れていますか?(注: これは、簡潔にするためにタイムスタンプのみを使用した単純化された例です)
フォーム上の PHP:
$time = mktime();
$first_name = md5($time + 'first_name');
フォーム上の HTML:
<form action="register.php" method="post">
<input type="text" name="<?php echo $first_name ?>" >
<input type="hidden" name="check" value="<?php echo $time ?>" >
<input type="submit" name="register">
</form>
Register.php
// check to see if there is a timestamp
if (isset($_POST['check'])) {
$time = strtotime($_POST['check']);
if (time() < $time) {
// original timestamp is in the future, this is wrong
}
if (time() - $time < 60) {
// form was filled out too fast, less than 1 minute?
}
// otherwise
$key = $_POST['check'];
if (md5($key + 'first_name') == $_POST['whatever-the-hash-on-the-first_name-field-was']) {
// process first_name field?
}
}
質問2:
フィールド名のハッシュはどのように物事をより安全にしますか? タイムスタンプのチェックを取得します (ただし、ブログ投稿の「過去が遠すぎる」という部分は理解できません... ボットがあまりにも速く入力するのではないでしょうか??) しかし、どのようなハッシュが行われているのかわかりませんname 属性は正確に行います。