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

假设这是一个简陋的转账接口

这是一个简陋的登录

小明想转账给小红,于是他登录之后点击页面上的转账按钮触发了
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

【学习日记】接口安全相关推荐

  1. java学习日记-接口

    回顾: abstract 修饰方法 抽象方法 没有方法体 必须定义在抽象类中 修饰类 抽象类 可以定义抽象方法 普通类中可以定义的一切,在抽象类中都可以定义 属性 构造方法 实例方法 不能实例化 子类 ...

  2. SpringMVC学习日记 1.Spring框架

    SpringMVC学习日记 1.Spring框架 Spring简介 Spring框架是一个开源框架,由Rod Johnson组织和开发,生产目的在于简化企业级应用的开发. 主要特性 非侵入(no-in ...

  3. 微信开发学习日记(一):快速阅读5本书,掌握整体背景

    2015年1月开始学习微信开发. 已经有多年开发经验了,从网上文章来看,微信开发主要是接口,然后是业务逻辑,不是很难.所以,我比较强调学习效率.一天学一点,是不能满足我的快速学习欲望的.       ...

  4. Java学习日记1——基础认知

    Java学习日记1--基础认知 学习Java阶段,如果发现不正确的描述,还请指正! 首先附上Java相关下载链接和配置教程链接 Java相关软件工具下载地址:官方下载 Java环境配置(win10配置 ...

  5. 210学习日记(18)_ARM基础知识

    210学习日记(18) --ARM基础知识 注意: 以下大部分类容都来自网上现成的(直接拷贝过来的,然后经整理)!!!! 问1:ARM处理器工作模式有几种?各种工作模式下分别有什么特点? 答1:ARM ...

  6. Nacos学习日记6-基于Springboot框架的Nacos服务注册报错:Application run failed

    目录 问题现象: 原因分析: 解决方法: 关于Curl的相关信息,想了解的同学可以查看我的其他文章,传送门: 问题现象: 今天在测试使用Nacos进行纯代码的方式去注册服务的时候,在启动项目时出现了报 ...

  7. 【学习日记】手写数字识别及神经网络基本模型

    2021.10.7 [学习日记]手写数字识别及神经网络基本模型 1 概述 张量(tensor)是数字的容器,是矩阵向任意维度的推广,其维度称为轴(axis).深度学习的本质是对张量做各种运算处理,其分 ...

  8. CUMT学习日记——软件工程考前速成记录

    CUMT学习日记--软件工程考前速成记录 系列第一篇 计算机网络复习 系列第二篇 计算机组成原理复习 系列第三篇 微机原理与接口技术复习 系列第四篇 计算机操作系统复习 系列第五篇 数据库原理复习 系 ...

  9. CUMT学习日记——Verilog课程学习全记录

    CUMT学习日记--Verilog课程学习全记录 系列第一篇 计算机网络复习 系列第二篇 计算机组成原理复习 系列第三篇 微机原理与接口技术复习 系列第四篇 计算机操作系统复习 系列第五篇 数据库原理 ...

  10. CUMT学习日记——信号与系统之考试复习的记录

    CUMT学习日记--信号与系统之考试复习的记录 系列第一篇 计算机网络复习 系列第二篇 计算机组成原理复习 系列第三篇 微机原理与接口技术复习 系列第四篇 计算机操作系统复习 系列第五篇 数据库原理复 ...

最新文章

  1. python之while循环用法举例,break与continue的区别,格式化输出及运算符
  2. html5 拖拽上传文件时,屏蔽浏览器默认打开文件
  3. vue项目中对接微信公众号使用微信js-sdk
  4. 技术人如何加速成长?提升你的思维和学习方式
  5. pytorch时空数据处理4——图像转文本/字幕Image-Captionning(二)
  6. idea导入项目出现时钟标志
  7. NS-miracle安装
  8. IOI2017 Day1 Toy Train 题解
  9. 农产品的种类(权威)
  10. Staring into the Abyss: An Evaluation of Concurrency Control with One Thousand Cores 论文阅读
  11. 369、Java中级24 -【Spring】 2020.08.26
  12. 惊醒!北漂,你到底在漂什么?
  13. 三氟磺隆(CAS 82097-50-5)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  14. 【三国演义】——诸葛亮
  15. 从来只留一场梦 一场春梦成白头 上软疑似解体 忆仙剑而作
  16. c#的DataTable的分组操作
  17. 360手机n4s骁龙版 html,360 手机N4S(骁龙版/全网通)
  18. c语言double类型的输入
  19. 互斥锁解决缓存雪崩问题(二)
  20. Python调用API进行地理编码

热门文章

  1. XXTea算法Java版
  2. 优化Symbian模拟器(转)
  3. 群晖安装frp实现内网穿透(2022最新版frp)
  4. Java开发环境配置图解
  5. 华为软开云8--发布
  6. 芯片项目流程的一些名词概念
  7. 汽车软件通信中间件SOME/IP简述
  8. 3dmax 8.0 简体中文免安装版
  9. 马尔科夫链与转移矩阵
  10. java treeview控件_【TreeView下载】TreeView控件 v1.1.6 官方版-开心电玩