最近几天我读到了如何防止CSRF攻击。我将在每次页面加载时更新token,将token保存在session中并在提交表单时进行检查。但是,如果用户打开了我的网站,比如打开了3个选项卡,而我只将最后一个标记存储在session中怎么办?这将用另一个token覆盖该token,一些后续操作将失败。我是否需要在session中存储所有token,或者是否有更好的解决方案来实现这一点? 最佳答案 是的,使用存储token方法,您必须保留所有生成的token,以防它们随时返回。单个存储token不仅对多个浏览器选项卡/窗口失败,而且对后退/前
我在yii2中遇到CSRF验证问题。使用gii生成的默认表单验证工作正常,但是当我使用html标签编辑表单时,表单提交会抛出一个错误的请求错误。我已禁用csrf验证以隐藏错误,但我想将其用于应用程序和数据验证的安全性。有什么方法可以解决这个错误,或者有什么方法可以将其配置为在这种情况下正常工作吗? 最佳答案 我想,您的html表单没有隐藏的_csrf字段,它是由标准Yii2小部件自动生成的。所以你的自定义表单的最小代码可能是这样的:request->csrfParam;?>"value="request->csrfToken;?>"
我在yii2中遇到CSRF验证问题。使用gii生成的默认表单验证工作正常,但是当我使用html标签编辑表单时,表单提交会抛出一个错误的请求错误。我已禁用csrf验证以隐藏错误,但我想将其用于应用程序和数据验证的安全性。有什么方法可以解决这个错误,或者有什么方法可以将其配置为在这种情况下正常工作吗? 最佳答案 我想,您的html表单没有隐藏的_csrf字段,它是由标准Yii2小部件自动生成的。所以你的自定义表单的最小代码可能是这样的:request->csrfParam;?>"value="request->csrfToken;?>"
我在我的公共(public)网站上使用Laravel的CSRF保护。然而,由于Laravel使用session来维护这一点,我担心用户可能会离开他们的计算机并返回到他们之前打开的页面,结果却发现ajax请求不起作用。ajax请求不起作用,因为session已超时(并且token不再验证?)。如果这些用户是“登录”用户,那么我可以简单地将他们重定向回登录页面。由于他们是公共(public)用户,因此用户被迫刷新页面以使其恢复工作(尴尬)。还是我错了?CSRFtoken是否仍会被Laravel验证(即使在session超时后,页面仍会发送token......但是Laravel会用它做什么
我在我的公共(public)网站上使用Laravel的CSRF保护。然而,由于Laravel使用session来维护这一点,我担心用户可能会离开他们的计算机并返回到他们之前打开的页面,结果却发现ajax请求不起作用。ajax请求不起作用,因为session已超时(并且token不再验证?)。如果这些用户是“登录”用户,那么我可以简单地将他们重定向回登录页面。由于他们是公共(public)用户,因此用户被迫刷新页面以使其恢复工作(尴尬)。还是我错了?CSRFtoken是否仍会被Laravel验证(即使在session超时后,页面仍会发送token......但是Laravel会用它做什么
我最近迁移到Laravel5,现在CSRF检查每个帖子提交。我考虑过删除它,但我想遵循最佳做法,所以我会保持这种方式。另一方面,我在提交ajax请求时遇到问题。我的页面有多个表单,有些提交甚至不是来自表单,只是简单的ajax调用。我的想法是在页面上有一个隐藏的“token”输入并将其附加到每个提交中。使用通用的单一token输入有什么缺点吗?另外,我怎样才能输出token?可以只在页脚上创建一个隐藏的输入吗? 最佳答案 我没有看到任何缺点。您可以在布局文件中轻松创建全局标记字段:或者如果您使用表单生成器:{!!Form::token
我最近迁移到Laravel5,现在CSRF检查每个帖子提交。我考虑过删除它,但我想遵循最佳做法,所以我会保持这种方式。另一方面,我在提交ajax请求时遇到问题。我的页面有多个表单,有些提交甚至不是来自表单,只是简单的ajax调用。我的想法是在页面上有一个隐藏的“token”输入并将其附加到每个提交中。使用通用的单一token输入有什么缺点吗?另外,我怎样才能输出token?可以只在页脚上创建一个隐藏的输入吗? 最佳答案 我没有看到任何缺点。您可以在布局文件中轻松创建全局标记字段:或者如果您使用表单生成器:{!!Form::token
在GET和POST参数,不仅仅是cookie;检查HTTPRefererheader;在维基百科上看到这篇文章,想知道如何应用它们好的...我正在使用KohanaPHP框架,并且可以确定引荐来源header,但我究竟要在引荐来源header中检查什么?框架函数只返回引荐来源网址我如何验证GET和POST参数?反对什么?存储信息?预期类型? 最佳答案 为了防止CSRF,您需要验证一次性token,POST'ed并与当前session相关联。像下面这样的东西。..在用户请求删除记录的页面:确认.php"/>Doyoureallywant
在GET和POST参数,不仅仅是cookie;检查HTTPRefererheader;在维基百科上看到这篇文章,想知道如何应用它们好的...我正在使用KohanaPHP框架,并且可以确定引荐来源header,但我究竟要在引荐来源header中检查什么?框架函数只返回引荐来源网址我如何验证GET和POST参数?反对什么?存储信息?预期类型? 最佳答案 为了防止CSRF,您需要验证一次性token,POST'ed并与当前session相关联。像下面这样的东西。..在用户请求删除记录的页面:确认.php"/>Doyoureallywant
我正在开发一个完全由ajax驱动的应用程序,其中所有请求都通过基本上相当于一个主Controller的东西传递,它的基本结构看起来像这样:if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH'])=='xmlhttprequest'){fetch($page);}这通常足以防止跨站点请求伪造吗?当整个页面不随每个请求刷新时,使用轮换token是相当不方便的。我想我可以在每个请求中将唯一token作为全局javascript变量进行传递和更新——但不知怎的,这感觉很笨拙,而且无论如何看起来本质上都是不安全的。编辑-也许静态token(如用户的UUID