【发布时间】:2018-04-23 14:39:14
【问题描述】:
我最近一直在研究一种通过使用令牌来阻止 CSRF 攻击的方法。据我了解:
1) 用户登录,设置会话cookie登录并生成CSRF令牌并保存到会话中
2) 用户提交表单(带有令牌)并且它应该与会话中的令牌匹配
假设我有 page1.php,它有一个 sql SELECT 来获取所有用户的帐户信息,然后在同一页面中,我还有一个指向 page2.php 的 ajax 按钮,它可以更改帐户信息。显然我保护 page2.php 免受 CSRF 的影响(因为这是一个发布请求)但是我如何保护 page1.php?如果这个页面是通过 ajax 从远程源调用或在攻击者网站上放置一个 iframe,这肯定会打印所有受害者的帐户信息吗?
如果是这种情况,为什么我似乎找不到任何关于保护所有页面免受 CSRF 攻击的信息,而我只找到用于在 ajax 中防止 CSRF 攻击的资源?
【问题讨论】:
-
假设您应该更担心此查询的 SQL 注入。
-
除此之外,您不应该在没有首先确认他们已登录到会话的情况下公开用户数据。会话仍然适用于 Ajax。
-
感谢您的观点,但是我想保持代码简洁明了,以了解问题的实际意义 - sql 注入不是本次讨论的主题
-
安全是,当公然违反基本最佳实践时,你很难责怪我指出这一点。
-
还有一些检查可以确保用户已登录,但如果会话和 cookie 仍在受害者浏览器上,那么攻击者仍然可以使用该信息对吗?