接口安全的技巧

​​1. 参数校验​​
必要性:防止无效请求,提高接口安全。
校验内容:
✓参数是否为空
✓参数类型是否正确
✓参数长度是否合理
✓枚举值是否合法
✓数据范围是否合适

​​2. 统一封装返回值​​
目的:防止敏感信息泄露,保持响应结构一致。
返回值格式:
{
"code": 0,
"message": null,
"data": [{"id": 123, "name": "abc"}]
}
- code含义:0 - 成功,1 - 参数为空,2 - 参数错误,3 - 签名错误,4 - 请求超时,5 - 服务器内部错误等。

3. 输入转义​​
XSS防御:转义用户输入的特殊字符。
SQL注入防御:对用户输入进行SQL转义。

​​4. 验证码​​
用途:防止恶意刷接口。
形式:图形验证码、滑块验证、短信验证码。
注意:复杂验证码会影响用户体验。

使用WebAuthn
-生物识别
-指纹识别
-虹膜识别
-人脸识别

5、请求日志
记录请求URL、参数、请求头信息、请求方式、响应数据和响应时间

6、幂等设计
使用数据库唯一索引或Redis保存requestId和请求参数来保证幂等性


7、使用OAuth2
资源所有者
授权服务器
客户端
资源服务器

8、API进行签名加密
身份验证服务
签名
加密

9、流控
对请求IP、请求接口、
请求用户做限流使用
Nginx、Redis或Gateway实现限流功能

IP黑白名单​​
用途:限制只有特定IP可以访问重要接口。
实现:动态配置IP白名单,或通过数据库管理。

10. 敏感词校验​​
方法:使用敏感词库对用户输入进行校验。
实现:自定义注解和AOP拦截器,敏感词匹配通过第三方接口或本地词库。

​​11. 权限控制​​
登录校验:判断用户是否登录。
功能权限:只有特定权限的用户可以访问某些接口。
数据权限:根据用户角色控制数据访问范围。

已授权可以访问
未授权不可以访问

12. HTTPS协议​​
优点:数据加密,防止窃听、伪装和篡改。
注意:需要申请证书,有额外费用。

使用HTTPS
传输层安全协议 TLS
加密传输
保护数据

13 数据加密​​和掩码处理
用途:保护用户核心信息(如手机号、邮箱等)。
实现:使用AES对称加密,自定义注解实现字段加解密。

14、压力测试
使用jmeter或apache
bench进行压力测试

 

 

posted @ 2025-07-10 10:56  yuxuan0802  阅读(12)  评论(0)    收藏  举报