php安全(三):csrf攻击

    CSRF(Cross-site request forgery),中文名称:跨站请求伪造。首先要获取站点用户登录信息,然后冒充正常用户登录,进行破坏活动,受害方为正常用户和站点。

csrf攻击无法完全防范,只能提高攻击的门槛。

防御方法

1.改良站内 API 的设计 
     对于发布帖子这一类创建资源的操作,应该只接受 POST 请求,而 GET 请求应该只浏览而不改变服务器端资源。
最理想的做法是使用restful风格的 API 设计,GET、POST、PUT、DELETE 四种方法对应资源的读取、创建、更新、删除操作。现在的浏览器基本不支持在表单中使用 PUT 和 DELETE 请求方法,我们可以使用 ajax 提交请求,也可以使用隐藏域指定请求方法,然后用 POST 模拟 PUT 和 DELETE。
这样,不同的资源操作区分的非常清楚,集中处理非 GET 类型的请求即可。
2.检测http的头信息refer
3.验证码

4.CSRF token,请求令牌 


    Token 使用原则 
Token要足够随机————只有这样才算不可预测 
Token是一次性的,即每次请求成功后要更新Token————这样可以增加攻击难度,增加预测难度 
Token要注意保密性————敏感操作使用post,防止Token出现在URL中 

在表单中加入隐藏域,提交Token,然后在后端进行验证Token是否正确,注意,在验证后,Token就应该被销毁

与XSS的联系和区别:
联系 
1.CSRF可以利用XSS实现更有用的攻击。 
2.XSS是跨站脚本,是实现CSRF的一种方式,是在站点的输入域执行脚本攻击,那么站点就需要对输入域的字段进行过滤。

区别 
1.CSRF不是XSS的子类,他们的本质问题不一样。XSS本质是服务端对输入过滤不严而后输出的时候将客户端的脚本再输出。 
2.CSRF是服务端对用户的身份认证不严格(cookie等),使得攻击者冒充用户达到攻击目的。 
   防御CSRF的前提是防御XSS

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值