php 跨站点请求伪造,PHP 跨站请求伪造及防护 (CSRF)【未完成】

一、什么是 CSRF

跨站请求伪造(Cross-Site Request Forgery),通常缩写为 CSRF 或者 XSRF,是一种使已登录用户在不知情的情况下执行某种动作的攻击。

二、CSRF请求过程

CSRF在违反同源策略的情况下,攻击主要用来执行某种非法动作,而非窃取用户数据。

例如,当受害者是一个普通用户时,CSRF可以实现在其不知情的情况下进行转移用户资金、发送邮件等操作。但是如果受害者是一个具有管理员权限的用户,CSRF则可能威胁到整个Web系统的安全。

1、用户登录站点A(例如存在CSRF漏洞的某银行站点)。

2、登录成功后A站点将Cookie信息保存在用户的浏览器端。

3、在未登出A站点,并且A站点的Cookie还在有效期内,用户访问攻击者的网站B站点。

4、在用户不知情的情况下,浏览器执行B站点的恶意代码,要求用户浏览器请求A站点。

5、用户浏览器在用户不知情情况下携带用户的Cookie对A站点发起请求触发CSRF攻击(例如转账给某人,用户遭受损失)。

说明:

从上面的流程可以看出,CSRF攻击者拥有用户的全部权限,可以控制用户执行受控网站的所有操作,攻击者可以构造复杂的请求欺骗用户进行一系列的操作,例如购物和完成各种授权。

CSRF攻击是攻击者借助受害者的Cookie骗取服务器的信任,但是攻击者并不能拿到Cookie,也看不到Cookie的内容。另外,对于服务器返回的结果,由于浏览器同源策略的限制,攻击者也无法进行解析。

因此,攻击者无法从返回的结果中得到任何东西,他所能做的就是给服务器发送请求,以执行请求中所描述的命令,在服务器端直接改变数据的值,而非窃取服务器中的数据。

所以,要保护的对象是那些可以直接产生数据改变的服务,而对于读取数据的服务,则不需要进行CSRF的保护。比如,银行系统中转账的请求会直接改变账户的金额,会遭到CSRF攻击,所以需要保护。而查询余额是对金额的读取操作,不会改变数据,CSRF攻击无法解析服务器返回的结果,所以无须保护。

三、CSRF的防护

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值