所以我正在开展一个安全审查项目,以确保我们保证某些数据安全(学生数据具体)。我个人现在不需要太担心这个,因为该计划是“现在开发,后来安全”,所以从某种意义上来说,我正在做“过早的安全优化”,但无论如何我还是想知道。
我正在使用内置了一些跨站点请求伪造保护的django。如果我启用它,我就无法预先形成文件上传,但它提供的解决方案是要求将crsf_token放入表单但我不知道实际上有一个表单,因为这部分项目只是一个服务。所以我想知道将此标记为免除CSRF保护是否安全?
没有设置cookie,没有存储会话,并且每个请求必须通过我创建的一小组自签名证书进行身份验证,并且只会给予一小组受信任的人(目前为1)。在我看来,CSRF在这里不适用,这意味着我可以将我需要的东西标记为免除CSRF保护吗?
答案 0 :(得分:3)
我不知道您网站的来龙去脉,但我会说不,它不能免于CSRF保护。
假设您的网站为https://www.example.com
,我假设自签名证书是从客户端like this使用的SSL证书。
现在说他们可以与您的网站进行互动,因为他们已经在浏览器中安装了客户端证书。现在,假设您的一位用户不小心访问了www.evil.com
。 www.evil.com
有一个隐藏的表单,可以通过用户的浏览器向您的网站发出请求。此表单提交https://www.example.com/delete_everything
。
在您的网站执行任何操作之前,它会检查客户端证书 - 嘿它是有效的,所以继续执行此操作。
这就是您需要CSRF保护的原因 - 需要首先从您自己的站点(例如令牌)读取所提交表单的有效负载内的内容。如果www.evil.com
尝试通过用户的浏览器阅读此内容,则他们无法受到Same Origin Policy的保护。
答案 1 :(得分:1)
你有很多选择,让我们想一想: