【学习日记】接口安全

刚刚了解这个接口安全,内容未必正确,大神请指点,萌新别全信
以下内容纯属虚构,如有模仿,后果自负

假设这是一个简陋的转账接口
在这里插入图片描述

这是一个简陋的登录
在这里插入图片描述

小明想转账给小红,于是他登录之后点击页面上的转账按钮触发了
http://localhost.com/ajaxclass/test_csfr_php.php?money=10&who=小红
这样一个链接。

小奸发现了这个链接于是他就在浏览器上直接访问
http://localhost.com/ajaxclass/test_csfr_php.php?money=10&who=小奸
但是返回了没有登录

于是小奸想到了一个办法,他在留言板留言了这样的内容:
<img src=“http://localhost.com/ajaxclass/test_csfr_php.php?money=10&who=小奸” />

然后当其他人打开这个网页的时候…
在这里插入图片描述

意外就这么发生了…
在这里插入图片描述

这就是小奸用了XSS和CSFR攻击,
如果小奸输入了的是:

这样小奸用的就是纯粹的XSS攻击,
总的来说:
XSS攻击就是页面注入htnl、css、js代码,
CSFR就是在用户不知情的情况下被发送了恶意请求,这里只是其中一种手法,有些可能绕过后端的跨域检测或者其他漏洞直接发请求

然后稍微总结一下防范措施:
1、 敏感接口用post不用get
POST 请求不会被缓存
POST 请求不会保留在浏览器历史记录中

2、验证请求来源
HTTP里面的Referer值就是请求来源,可以通过这个判断是否自己的域名或者对应的页面地址发出的请求。
后来我又发现表单直接post是没有这个Referer,而且可以跨域的,
然后我又想强制用请求提交,但是$_SERVER里面判断是否请求提交那个标志好像不靠谱,而且Referer这个标志好像也是能伪造的
然后又发现了表单post的话可以用HTTP_REFERER来验证,但还是那句能伪造的
等我哪天发现了防御方法再写,
而且别人还能通过上传漏洞上传了恶意代码的文件去攻击,那这来源检测也没用了

3、htmlspecialchars
对输入内容进行html转实体操作后,页面输出时就不会解析成html
在这里插入图片描述

4、addslashes
还有这个防sql注入的

5、用户使用接口权限注册
Token和refresh_token
用户第一次注册接口使用权限时生成token和refresh_token,token用于每次请求携带验证用户身份,refresh_token用于换取token。之所以这样设计是因为token是每次请求都会用到的,所以容易被抓取,而refresh_token是换取token的时候才用到,使用频率较低,所以没那么容易抓取到

6、页面参数加密
后端给前端提供敏感参数时,双向加密一波,比如抽奖,一等奖的奖品id是123456789,那别人就知道一等奖的id是这个了,就有机可乘了。

7、接口提交参数签名并加密
这个参数签名我还没理解清楚作用,好像是应对参数篡改的情况,具体还得有空实操一遍

8、公钥私钥的也还没理解清楚

9、https
使用安全证书

参考:
https://www.cnblogs.com/accumulater/p/6178166.html
https://zhuanlan.zhihu.com/p/22521378
https://www.cnblogs.com/shytong/p/5308667.html
https://blog.csdn.net/lynnlovemin/article/details/80638765
https://learnku.com/php/t/27412

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值