我正在为我的电子商务网站寻找 CSRF。我已经为表单实现了一种基于令牌的方法。
我在我的网站的购物篮页面上有一个结帐链接,它只是链接到地址页面。一旦进入地址页面,就会进行各种检查以确保用户已登录并在他们的购物篮中有物品。然后它根据存储在会话中的 user_id 提取用户现有地址。
我的问题是,结帐链接中是否存在漏洞?它不会以任何方式更改任何数据。
CSRF 不是“易受攻击”或“不易受攻击”类型的漏洞。更多的是“可以利用某些东西吗?”。让我详细说明。
CSRF 背后的整个想法是强迫用户(通过任何可用的方式)以编程方式(最好未经他们的同意)以自己的身份执行更改。执行此操作的方法是找到您尝试攻击的站点的一部分,该部分具有重要的请求,即:
GET
参数完成(此时您可以使用img
标签来欺骗用户的浏览器触发它)CSRF 本身很少见(大多数网站POST
用于很多事情。不得不求助于图像标签非常罕见)。更可能的组合是 CSRF+XSS,尽管可以找到变体。
防御 CSRF 的关键不是“我的链接可能被黑了!!!”。此外,请确保您可以重放的请求GET
是幂等的(即不会导致状态更改),并且其他任何东西都使用一次性令牌来防止自动重放。
如果您只能从请求中检索数据,那么它对 CSRF 是安全的。
CSRF 是一种攻击,它诱使用户提出更改某些内容的请求(发表评论(可能是垃圾邮件!)、购买某些内容、为某些内容投票、更改他们的帐户详细信息等)。