我知道 Codeigniter 有一个非常有用的安全类,如果你使用表单助手,它可以防止 CSRF/XSRF,但是由于 CI url 结构几乎直接调用了很多函数,我怎样才能在/action/logout
没有额外的情况下防止 CSRF像SE这样的确认表?
我有过的想法:
- 检查页面引用者
- 检查请求的 MIME 类型(甚至可能?)(对于图像 CSRF,例如
<img src="http://example.com/action/logout" />
) - 使所有操作成为表单的一部分(不推荐)
- 在页面 URL 中包含 CSRF 令牌(丑陋且非常糟糕,用户喜欢复制和粘贴 url,而不考虑存储的会话 ID 或其他私人信息)
我不会费心保护诸如此类的东西,/account/view/1/cyclone/
因为它不会执行任何操作,最多只会浪费带宽。
当然,我确实知道有些人喜欢编写代码来自动化他们的网站使用,我尊重这一点,这就是为什么我将创建一个 API 来通过代码或自动执行操作。