Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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
Post 不带模板的Tornado XSRF令牌_Post_Backbone.js_Cookies_Tornado_Csrf - Fatal编程技术网

Post 不带模板的Tornado XSRF令牌

Post 不带模板的Tornado XSRF令牌,post,backbone.js,cookies,tornado,csrf,Post,Backbone.js,Cookies,Tornado,Csrf,我目前正在实施一个包含Tornado上的主干木偶的项目,并且遇到了XSRF令牌的问题。由于XSRF不是通过模板(通过XSRF_form_html())交付的,因此当用户登录应用程序时,向登录url“//login”发出GET请求,并通过以下方式检索XSRF令牌: class LoginHandler(BaseHandler): """ """ def get(self): token = self.xsrf_token self.respond(dict(_xsrf=token

我目前正在实施一个包含Tornado上的主干木偶的项目,并且遇到了XSRF令牌的问题。由于XSRF不是通过模板(通过XSRF_form_html())交付的,因此当用户登录应用程序时,向登录url“//login”发出GET请求,并通过以下方式检索XSRF令牌:

class LoginHandler(BaseHandler):
"""
"""

def get(self):
    token = self.xsrf_token
    self.respond(dict(_xsrf=token))
self.response看起来像:

def respond(self, response=None):
    """
    :param data:
    :return:
    """

    if response is not None:
        self.set_header('Content-Type', 'application/json')
        self.write(json.dumps(response))
    else:
        self.set_header('Content-Type', 'text/plain')
        self.write("")
但是,每当向服务器发送POST(字段值为
“xsrf”:token
)时,我都会得到标志性的“xsrf cookie不匹配POST参数”。由于xsrf cookie不存在(到目前为止,我试图确保cookie存在的尝试失败了……不完全确定如何持久化),因此每次请求时都会重新生成服务器上的xsrf令牌。也许我在这里遗漏了(或误解了)一些关键的东西,但我希望其他人也遇到过这样的范例,并有一个解决方案或建议


提前谢谢

xsrf令牌必须以两种不同的方式发送,并且它们必须匹配。一次在cookie中,一次在标题或表单编码的帖子正文中(正文不能是json,必须具有表单编码或多部分内容类型)。只要您的客户可以发送邮件,通常首选邮件头;您需要同时发送
Cookie:xsrf=foo
X-xsrf-Token:foo


自Tornado 3.2.2以来,xsrf代币包含一个随机组件,用于对抗漏洞攻击,因此两个代币可以匹配而不完全相同。

嘿,Ben,谢谢-我在发布此消息后大约30分钟才意识到这一点,但忘了回答我自己的问题。我想我希望龙卷风也有一个持久的存储(这,回顾过去,我真的不知道为什么我希望…)。谢谢你的回复。关于在cookie xsrf周围封装加密,并在背面封装解码器以防止令牌可能泄漏,您的看法是什么?我不确定加密在这里会有什么帮助,因为xsrf令牌的要点是合法客户端可以看到它并将其传给您。您必须更加清楚您的威胁模型以及您打算如何管理密钥(我认为全局对称密钥没有意义,尽管每个用户和/或非对称密钥可能会)。我认为有状态会话方案比向随机令牌添加加密更有可能产生安全性改进。我对此进行了更多的思考,虽然总体目标是防止恶意代理获取并使用令牌,但这并不会特别缓解它,因此我收回了这一想法。将其持久化并覆盖get_xsrf_令牌以从后端提取,而不是在响应头中发送它会更好。再次感谢你的帮助!如果我的代表人数超过15人,我会提高投票率(只要我做到了,我就会记得回来投票)