我一直在閱讀this blog post和這個stack overflow post但我沒有太多的哈希表單字段的經驗(蜜罐部分,網上似乎有很多例子)所以我有幾個的問題。PHP哈希輸入字段名稱
問題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屬性確實如此。
哈希是一種方式,它們不能被解碼 – SupremeDud
解碼是一個糟糕的詞的選擇。我的意思是,比較所創建的表單與應該根據「檢查」字段生成的名稱的哈希值。 – redconservatory
另外,這個例子中我使用md5還是應該使用SHA2? – redconservatory