我正在构建一个登录表单,我试图尽可能地进行黑客攻击,我正在使用3次攻击规则,当输入错误3次时暂停登录3分钟以防止强力进入并使用sha256到目前为止我知道到目前为止,使用随机盐和胡椒技术并不是黑客。
然后将密码随机拆分并重新组合在一起
无论如何足够:):
我已经构建了一个表单,该表单使用随机会话令牌发送隐藏的表单字段,每次生成表单时都会更改,如果该令牌与用户浏览器上的当前会话不匹配则拒绝表单。
问题在于,由于某种原因,在发送表单时它就不匹配,即使它应该。
我不知道为什么......
这是我的代码:
创建会话:
$formsession = $session->setSessions('RANDOM_FORM_SESSION,' . $general->randomString());
我从会话课开始:
public function setSessions($key = ''){
if(is_array($key)){
foreach($key as $k){
list($sessionname, $result) = explode(',', $k);
$_SESSION[$sessionname] = $result;
}
} else {
list($sessionname, $result) = explode(',', $key);
$_SESSION[$sessionname] = $result;
}
}
从我创建的表单类:
public function createHiddenPosts($value, $name, $id = ''){
if(!empty($id)){ $id = 'id="'.$id.'" '; }
return '<input type="hidden" value="'.$value.'" '.$id.'name="'.$name.'">';
}
从前端:
echo $login->createHiddenPosts($_SESSION['RANDOM_FORM_SESSION'], 'formissent');
最后检查会话是否等于令牌的代码:
if(!$errors){ if(isset($_POST['formissent']) && $_POST['formissent'] == $_SESSION['RANDOM_FORM_SESSION']){ $form = true; } else { $errors[] = 'Our site only accepts forms submitted from our website and only from users who accept cookies!'; } }
对于我的生活,我不明白为什么它不匹配。任何光都会非常感激:)