tornado:实现自定义csrf验证 在web编程中,有时会有很多非主流的用法。比如用get方式来删除一个资源: ``` /localhost/ads/delete?id=123 ``` 这样很容易引入跨站攻击。 在tornado中,可以用系统的csrf检测机制规避一些风险。 ## 处理页 在处理页面中,直接调用`check_xsrf_cookie()`做跨站检测。 ``` class AdminAdsDelete(BasicHandler): def get(self): self.check_xsrf_cookie() id = int(self.get_argument("id", default=0)) ... ``` ## 前端页面 因为后端做了检测,在index页面中,必须把csrf token传入到前端。可以用`self.xsrf_token`获取这个token。 ``` class AdminAdsIndex(BasicHandler): def get(self): ... self.render("admin/ads/index.html", ad_list=ad_list, xsrf_token=self.xsrf_token) ``` 此时,在链接中,必须加入csrf token做get参数。否则在处理页`check_xsrf_cookie()`会引发检测,造成403错误。 ``` 删除 ``` 来自 大脸猫 写于 2017-07-17 13:00 -- 更新于2020-10-19 13:06 -- 0 条评论