63.接口安全设计(活动管理系统:三)

文章目录
  • 一、参数校验
  • 二、统一封装返回值
  • 三、做权限控制
  • 四、加验证码
  • 五、 限流
  • 六、加ip白名单
  • 七、校验敏感词
  • 八、使用https协议
  • 九、数据加密
  • 十、做风险控制

在日常工作中,开发接口是必不可少的事情,无论是RPC接口还是HTTP接口,我们都应该考虑一个问题:如何保证接口的安全性呢?

常见保证接口安全的技巧如下:
![在这里插入图片描述](https://img-
blog.csdnimg.cn/direct/f2394076fa014988beb8cb2b8fdfd908.png)

一、参数校验

保证接口安全的第一步,也是最重要的一步,需要对接口的请求参数做校验。

如果我们把接口请求参数的校验做好了,可以拦截大部分的无效请求,节省了机器资源,也避免了程序报错。

通常我们可以按如下步骤做校验,当然,最重要的是根据具体的业务场景和诉求做校验

  1. 校验参数是否为空 ,有些接口中可能会包含多个参数,有些参数允许为空,有些参数不允许为空,我们需要对这些参数做校验,防止接口底层出现异常。
  2. 校验参数类型 ,比如:ageint类型的,用户传入了一个字符串:"123abc",这种情况参数不合法,需要被拦截。
  3. 校验参数的长度 ,特别是对于新增或者修改数据接口,必须要做参数长度的校验,否则超长了数据库会报异常。比如:数据库username字段长度是30,新用户注册时,输入了超过30个字符的名称,需要提示用户名称超长了。虽说前端会校验字段长度,但接口对参数长度的校验也必不可少。
  4. 校验枚举值 ,有些接口参数是枚举,比如:status,数据库中设计的该字段只有1、2、3三个值。如果用户传入了4,则需要提示用户参数错误。
  5. 校验数据范围 ,对于有些金额参数,需要校验数据范围,比如:单笔交易的money必须大于0,小于10000

二、统一封装返回值

对接口返回值统一封装是可以让代码更规范,也能使得接口更安全。

假如有这样一种场景:某个接口底层的sql,在某种条件下有语法问题。某个用户请求接口之后,在访问数据库时,直接报了sql语法错误,将数据库名、表名、字段名、相关sql语句都打印出来了。

此时,如果你的接口将这些异常信息直接返回给外网的用户,有些黑客拿着这些信息,将参数做一些调整,拼接一些注入sql,可以对你的数据库发起攻击。

因此,非常有必要对接口的返回值做统一的封装。

例如下面这样:

{
    "code":0,
    "message":null,
    "data":[{"id":123,"name":"abc"}]
}

json返回值中定义了三个字段:

  • code:表示响应码,0-成功,1-参数为空,2-参数错误,3-签名错误 4-请求超时 5-服务器内部错误等。工作中对于错误码的定义也有一定规范和技巧 ,如定义到同一个文件中,10001001,前四位1000表示业务,比如活动管理系统,1001表示具体错误 ,如参数校验失败
  • message:表示提示信息,如果请求成功,则返回空。如果请求失败,则返回我们专门在代码中处理过,让用户能看懂的错误信息。
  • data:表示具体的数据,返回的是一个json字段。

对返回值这样封装之后,即使在接口的底层出现了数据库的异常,也不会直接提示用户,而是内部判断错误后,给用户提示的是服务器内部错误。

注:工作中分为B端和C端两种服务场景

  • B端一般是内部使用的一些管理系统,这种系统对于报错应该返回给前端非常清晰明确的错误,这样产品和运营以及研发和测试等同事能很快知道出了什么错。
  • C端则是直接给外部用户使用的,我们不用给外部透露过多细节,出错时应该用一些兜底的页面或者策略,错误提示也应该是处理过不包含内部信息的,且能让用户能看得懂的信息,如服务器开小差啦,请稍后重试!,

下面给大家总结了一套适用于网安零基础的学习路线,应届生和转行人员都适用!

1、网络安全理论知识(2天)

①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)

①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)

①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)

①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)

①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)

①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

网络安全工程师企业级学习路线

零基础入门视频教程

所有资料共282G,朋友们如果有需要全套资料包,可以点下面卡片获取,无偿分享!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值