【发布时间】:2019-10-20 23:28:29
【问题描述】:
我有一个网站,可以在用户登录时检查 CSRF 令牌。表单看起来像
<cfoutput>
<input type="hidden" name="token" value="#CSRFGenerateToken()#" />
</cfoutput>
稍后检查
if (framework.getCGIRequestMethod() == "post" && !CSRFverifyToken(rc.token)) {
rc.arMessage.append("<b>Debug:</b> Fail Token");
return;
}
我想验证这实际上是在检查。令牌是否过期或超时?在application.cfc 中更改this.name= 似乎没有任何作用。令牌是基于域名的吗?
我需要对此进行测试。我不需要自动化测试,只需以某种方式进行测试即可。
【问题讨论】:
-
根据文档,应该创建值并将其放入当前会话中。也许转储并验证该值是否存在?您应该能够在整个会话中使用一个,或者强制为每个表单使用一个新值(这似乎有点过分了)。 cfdocs.org/csrfgeneratetoken
-
有趣的是,在链接的文档中,所有示例都是表单的一部分。没有一个在会话范围的变量中
-
我认为该函数本质上是“如果此会话变量不存在,则创建它并将其定义为该值”。然后将该值作为表单字段变量提交,这使您可以根据会话变量值验证表单范围变量值。
标签: coldfusion csrf cfml coldfusion-2016 fw1