Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
表单提交上的PHP会话令牌_Php_Session_Token - Fatal编程技术网

表单提交上的PHP会话令牌

表单提交上的PHP会话令牌,php,session,token,Php,Session,Token,您好,互联网的大师们 下面是关于创建安全用户登录/注册系统的教程,可在此处找到: 我遇到的问题是表单是在一个单独的.php文件上处理的,而不是像视频中那样承载表单的文件 提交时(form.php): 从book.php调用令牌类: if(Input::exists()) { if(Token::check(Input::get('token'))) { //execute code here } 调用的令牌类(Token.php) } 我的问题是如果我不发表评论 //Session::de

您好,互联网的大师们

下面是关于创建安全用户登录/注册系统的教程,可在此处找到:

我遇到的问题是表单是在一个单独的.php文件上处理的,而不是像视频中那样承载表单的文件

提交时(form.php):

从book.php调用令牌类:

if(Input::exists()) {

if(Token::check(Input::get('token'))) {
//execute code here
}
调用的令牌类(Token.php)

}

我的问题是如果我不发表评论

//Session::delete($tokenName);
将在后续表单提交时删除令牌

这篇文章是通过form.php中的jquery/ajax完成的,因此当表单重新加载错误消息时,初始标记不会被刷新。 在下一次提交时,$tokenName已经从上一次调用中删除,使条件无效,或者至少我认为这就是正在发生的情况。 由于在任何后续提交中,book.php不再执行此处的代码:

if(Token::check(Input::get('token'))) {
//execute code here
}
我只是发表评论,不理会,行吗

Session::delete($tokenName);
还是我应该换一种方式


这里是新手,所以请对我放轻松…

你的建议听起来很正确。稍后的ajax调用将通过相同的旧令牌发送,该令牌已被删除。不删除令牌并将其留在会话中不会有什么坏处。这不太理想,但不痛。至少你在使用一个代币。嘿,乔纳森,这正是我所想的,但我正在寻求更有经验的人的确认。这样做会不会有安全问题?不管怎样,这个令牌都可能被劫持,即使如此,它是否可以被用来绕过帖子?如果你想对它更安全一点,每几次请求就生成一个新令牌,将它存储在会话中并发送回来。在客户端上,如果您在ajax响应中看到令牌,请使用将来的ajax请求覆盖您发送的令牌值。令牌的全部目的是防止其他网站冒充您的表单。任何人都可以在网站上创建一个看起来像你的表单,并将其指向你的网站。当有人填写表单并提交时,它会将您的站点视为一个普通请求。令牌的要点是表单可以通过令牌发送,但它与会话中的令牌不同。我的坏网站无法访问您的会话以获取您提交表单所需的令牌。所以我不能伪造一个像你一样的请求。不管每个请求的令牌是否相同,我如何使用ajax刷新令牌?如果你不介意我的无知…你的建议听起来很正确。稍后的ajax调用将通过相同的旧令牌发送,该令牌已被删除。不删除令牌并将其留在会话中不会有什么坏处。这不太理想,但不痛。至少你在使用一个代币。嘿,乔纳森,这正是我所想的,但我正在寻求更有经验的人的确认。这样做会不会有安全问题?不管怎样,这个令牌都可能被劫持,即使如此,它是否可以被用来绕过帖子?如果你想对它更安全一点,每几次请求就生成一个新令牌,将它存储在会话中并发送回来。在客户端上,如果您在ajax响应中看到令牌,请使用将来的ajax请求覆盖您发送的令牌值。令牌的全部目的是防止其他网站冒充您的表单。任何人都可以在网站上创建一个看起来像你的表单,并将其指向你的网站。当有人填写表单并提交时,它会将您的站点视为一个普通请求。令牌的要点是表单可以通过令牌发送,但它与会话中的令牌不同。我的坏网站无法访问您的会话以获取您提交表单所需的令牌。所以我不能伪造一个像你一样的请求。不管每个请求的令牌是否相同,我如何使用ajax刷新令牌?如果你不介意我的无知。。。
Session::delete($tokenName);