我一直在阅读这篇博客文章和这篇堆栈溢出文章,但我对散列表单字段没有太多经验(蜜罐部分,网上似乎有很多例子)所以我有几个问题。
问题 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>
注册.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 属性确实如此。