发送表单时随机令牌不匹配会话

时间:2014-10-27 11:20:37

标签: php forms oop session

我正在构建一个登录表单,我试图尽可能地进行黑客攻击,我正在使用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!'; } }

对于我的生活,我不明白为什么它不匹配。任何光都会非常感激:)

0 个答案:

没有答案