程序设计-接口安全设计要点

通常在开发需求前需要对功能接口的安全方面进行考虑和设计,通常包括7个方面

序号安全需求安全设计要点
1输入校验1.设置请求参数的允许的字符类型、最小/大字符长度限制、取值范围,在满足业务需求的前提下,将所支持的字符范围降到最低
2.文件上传、下载功能检查文件大小是否超出限制,检查文件名、文件路径是否包含特殊字符、是否在预期路径、是否是预期格式
3.其他基于业务逻辑的输入校验
2敏感信息处理1.敏感信息的传输需确保传输过程受到保护,如使用https,密码传输时需进行额外加密;
2.敏感信息展示时需按照《个人敏感数据掩码规范》的要求脱敏;
3.敏感信息存储时:
3.1.对于需要知道原文的敏感信息数据(如联系方式),建议采用可逆加密算法进行加密后再存储
3.2.对于不需要知道原文的敏感信息数据(如密码),建议采用不可逆哈希算法处理后存储
3.3.一般情况下,不在客户端存储密钥,加密秘钥不能hardcode在代码中,需要有可替换的秘钥管理机制
3.4.敏感信息的增删改查均有权限控制
3.5.敏感信息不能打印在日志中
2.避免将cookie、token等信息通过GET方式传输;
3.需要在前端不再展示某些功能、页面时,应采用将接口、入口从页面源码中移除同时在服务端关闭相关功能的方式,而不能采用display:none、注释掉等仅让内容不显示在页面上的方式。
3访问控制1.是否需要登录才可访问;
2.是否需要检查用户能访问功能接口的权限,考虑基于最小权限原则,以白名单方式明确新增或修改的API可以允许哪些用户访问;
3.是否需要校验接口操作的对象是否属于当前用户;
4.是否需要校验接口操作的对象是否处于允许被操作的状态;
5.使用了项目统一的角色权限控制解决方案;
4输出编码1.对于直接来自用户输入的内容、曾经来自用户输入的内容(如数据库中存储的曾经来自用户输入的内容、从其他系统传输过来且曾经来自用户输入的内容
在输出到前端进行展示之前应对特殊字符进行转义
2.对于直接来自用户输入的内容、曾经来自用户输入的内容,将其以Excel文件(csv、xls、xlsx)导出时需检查内容是否可能形成Excel公式(以一个等号开头),
若存在建议过滤公式内容(移除内容开头的等号)或将内容强制转换为Excel的文本格式(在内容前拼接一个单引号)
5参数化SQL1.优先采用预编译、参数化的方式编写SQL语句,避免使用拼接变量的方式构造SQL
2.对于只能采用变量拼接方式构造SQL场景,需对变量内容进行白名单检查,或对内容是否包含预期之外的字符进行检查
3.以上方式都难以执行而又确实需要采用变量拼接方式构造SQL场景,可考虑使用ESAPI.encoder等安全编码组件对变量内容进行编码
6防通知骚扰1.发送信息前进行图验验证
2.优先从服务端获取要发送的手机号码、邮箱、微信等个人通信地址
3.在服务端对发送间隔做限制
4.对一定时间内发送总次数做限制
7高并发对于存在高并发场景的业务功能,需注意加锁限制资源竞争
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值