【学习日记】接口安全
刚刚了解这个接口安全,内容未必正确,大神请指点,萌新别全信
以下内容纯属虚构,如有模仿,后果自负
假设这是一个简陋的转账接口
这是一个简陋的登录
小明想转账给小红,于是他登录之后点击页面上的转账按钮触发了
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
【学习日记】接口安全相关推荐
- java学习日记-接口
回顾: abstract 修饰方法 抽象方法 没有方法体 必须定义在抽象类中 修饰类 抽象类 可以定义抽象方法 普通类中可以定义的一切,在抽象类中都可以定义 属性 构造方法 实例方法 不能实例化 子类 ...
- SpringMVC学习日记 1.Spring框架
SpringMVC学习日记 1.Spring框架 Spring简介 Spring框架是一个开源框架,由Rod Johnson组织和开发,生产目的在于简化企业级应用的开发. 主要特性 非侵入(no-in ...
- 微信开发学习日记(一):快速阅读5本书,掌握整体背景
2015年1月开始学习微信开发. 已经有多年开发经验了,从网上文章来看,微信开发主要是接口,然后是业务逻辑,不是很难.所以,我比较强调学习效率.一天学一点,是不能满足我的快速学习欲望的. ...
- Java学习日记1——基础认知
Java学习日记1--基础认知 学习Java阶段,如果发现不正确的描述,还请指正! 首先附上Java相关下载链接和配置教程链接 Java相关软件工具下载地址:官方下载 Java环境配置(win10配置 ...
- 210学习日记(18)_ARM基础知识
210学习日记(18) --ARM基础知识 注意: 以下大部分类容都来自网上现成的(直接拷贝过来的,然后经整理)!!!! 问1:ARM处理器工作模式有几种?各种工作模式下分别有什么特点? 答1:ARM ...
- Nacos学习日记6-基于Springboot框架的Nacos服务注册报错:Application run failed
目录 问题现象: 原因分析: 解决方法: 关于Curl的相关信息,想了解的同学可以查看我的其他文章,传送门: 问题现象: 今天在测试使用Nacos进行纯代码的方式去注册服务的时候,在启动项目时出现了报 ...
- 【学习日记】手写数字识别及神经网络基本模型
2021.10.7 [学习日记]手写数字识别及神经网络基本模型 1 概述 张量(tensor)是数字的容器,是矩阵向任意维度的推广,其维度称为轴(axis).深度学习的本质是对张量做各种运算处理,其分 ...
- CUMT学习日记——软件工程考前速成记录
CUMT学习日记--软件工程考前速成记录 系列第一篇 计算机网络复习 系列第二篇 计算机组成原理复习 系列第三篇 微机原理与接口技术复习 系列第四篇 计算机操作系统复习 系列第五篇 数据库原理复习 系 ...
- CUMT学习日记——Verilog课程学习全记录
CUMT学习日记--Verilog课程学习全记录 系列第一篇 计算机网络复习 系列第二篇 计算机组成原理复习 系列第三篇 微机原理与接口技术复习 系列第四篇 计算机操作系统复习 系列第五篇 数据库原理 ...
- CUMT学习日记——信号与系统之考试复习的记录
CUMT学习日记--信号与系统之考试复习的记录 系列第一篇 计算机网络复习 系列第二篇 计算机组成原理复习 系列第三篇 微机原理与接口技术复习 系列第四篇 计算机操作系统复习 系列第五篇 数据库原理复 ...
最新文章
- python之while循环用法举例,break与continue的区别,格式化输出及运算符
- html5 拖拽上传文件时,屏蔽浏览器默认打开文件
- vue项目中对接微信公众号使用微信js-sdk
- 技术人如何加速成长?提升你的思维和学习方式
- pytorch时空数据处理4——图像转文本/字幕Image-Captionning(二)
- idea导入项目出现时钟标志
- NS-miracle安装
- IOI2017 Day1 Toy Train 题解
- 农产品的种类(权威)
- Staring into the Abyss: An Evaluation of Concurrency Control with One Thousand Cores 论文阅读
- 369、Java中级24 -【Spring】 2020.08.26
- 惊醒!北漂,你到底在漂什么?
- 三氟磺隆(CAS 82097-50-5)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 【三国演义】——诸葛亮
- 从来只留一场梦 一场春梦成白头 上软疑似解体 忆仙剑而作
- c#的DataTable的分组操作
- 360手机n4s骁龙版 html,360 手机N4S(骁龙版/全网通)
- c语言double类型的输入
- 互斥锁解决缓存雪崩问题(二)
- Python调用API进行地理编码