跨站请求伪造 (CSRF)
跨站请求伪造 (CSRF) 是一种安全攻击,攻击者诱骗用户在其已登录的应用程序中执行非预期的操作,例如转账、修改个人信息等。CSRF 攻击通常利用用户的信任来实施,因为用户在自己的浏览器中看到的是来自可信网站的请求,而没有意识到该请求实际上是被攻击者伪造的。
攻击方式:
利用表单提或者链接跳转。攻击者会构造一个恶意表单或者链接,诱骗用户点击。当用户点击表单时,会向受害者的应用程序发送一个 POST 请求或者GET 请求,其中包含攻击者想要执行的操作。
利用图片请求: 攻击者利用浏览器对图片的自动请求特性,构造一个包含恶意请求的图片。当用户浏览包含恶意图片的页面时,浏览器会自动向受害者的应用程序发送请求,其中包含攻击者想要执行的操作。
防御措施:
在表单中添加 CSRF 令牌: 在表单中添加一个随机生成的 CSRF 令牌,并将其作为隐藏域提交给服务器。服务器端在验证用户请求时,会检查 CSRF 令牌的有效性。
使用 HTTP Referer 头: 使用 HTTP Referer 头来检查请求来源,防止跨域请求。
使用 SameSite Cookie 属性: 将 Cookie 的 SameSite 属性设置为 Strict,可以防止 CSRF 攻击。
代码示例:
html 代码解读复制代码
上面的表单中没有使用CSRF令牌,攻击者可以构造一个恶意链接,诱骗用户点击。
当用户点击恶意链接时,会向转账页面发送一个POST请求,其中包含转账金额等信息。
由于用户的浏览器会自动携带Cookie,攻击者可以利用Cookie来冒充用户身份,执行转账操作。