接口安全的技巧
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进行压力测试


浙公网安备 33010602011771号