【无标题】

CSRF (Cross Site Qequest Forgery)–跨站点请求伪造
CSRF工作原理
在这里插入图片描述

CSFR的特点:
攻击一般发起在第三方网站,而不是被攻击的网站,被攻击的网站无法防止攻击发生(但是可以防御csrf)。
攻击利用受害者在被攻击网站的登录凭证,冒充受害者提交操作,而不是直接窃取数据。整个过程攻击者并不能获取到受害者的登录凭证,仅仅是“冒用”。(攻击者只能利用cookie而不能获取cookie)
CSRF攻击方式
1、通过图片的img src属性,自动加载,发起GET请求

<img

src="http://xxxxx.com/bank/tansfer.php?nameid=2002&amount=1000"width="0"height="0">

2、构建一个超链接,用户点击以后,发起GET请求

<a

herf="http://xxxxxx.com/tansfer.php?amount=1000&to=jiangang"taget="blank">

小姐姐在线视频聊天!!

<a/>

3、构建一个隐藏表单,用户访问,自动提交,发起POST请求

**漏洞防御**: 1、**访问控制安全管理:**

(1)、敏感信息的修改需要对身份证进行二次验证,比如修改账号时,需要判断旧密码;

(2)、敏感信息的修改使用post,而不是get;

(3)、通过http头部中的referer来限制原页面

2、增加验证码:

一般用在登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性)

referer验证

3、Anit CSRF Token
在form表单后头信息中专递token
token存储在服务端
服务端通过拦截器验证有效性
检验失败的拒绝请求
​ (1)、使用用户名密码登录,服务端下发一个随机的token字段,并且服务端把这个字段保存在session中。(服务端生成token发给客户端)

session_start();

if(empty($_SESSION['token'])){

	$SESSION['token']=bin2hex(random_betes(32));

}

$token= $_SESSION['token']

​ (2)、客户端把这个token保存起来,放到隐藏字段

​ (3)、用户在登录状态下,在访问的时候,都要携带这个token字段

​ (4)、服务器端从session中拿出token值进行对比,如果一致,说明合法

if (!empty($_POST['token'])){
	if(hash_equals($_SESSION['token'],$_POST['token'])){
        //执行业务逻辑
    }else{
        //..
    }
}

​ (5)、用户退出,session销毁,token失效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值