合作机构:阿里云 / 腾讯云 / 亚马逊云 / DreamHost / NameSilo / INWX / GODADDY / 百度统计
最近知识星球中有位小伙伴问了我一个问题:如何保证接口的安全性?
根据我多年的工作经验,这篇文章从11个方面给大家介绍一下保证接口安全的一些小技巧,希望对你会有所帮助。
图片
保证接口安全的第一步,也是最重要的一步,需要对接口的请求参数做校验。
如果我们把接口请求参数的校验做好了,真的可以拦截大部分的无效请求。
我们可以按如下步骤做校验:
我们可以自己写代码,对每个接口的请求参数一一做校验。
也可以使用一些第三方的校验框架。
比如:hiberate的Validator框架,它里面包含了@Null、@NotEmpty、@Size、@Max、@Min等注解。
用它们校验数据非常方便。
当然有些日期字段和枚举字段,可能需要通过自定义注解的方式实现参数校验。
可能有些小伙伴认为,对接口返回值统一封装是为了让代码更规范。
其实也是处于安全方面的考虑。
假如有这样一种场景:你写的某个接口底层的sql,在某种条件下有语法问题。某个用户请求接口之后,在访问数据库时,直接报了sql语法错误,将数据库名、表名、字段名、相关sql语句都打印出来了。
此时,如果你的接口将这些异常信息直接返回给外网的用户,有些黑客拿着这些信息,将参数做一些调整,拼接一些注入sql,可以对你的数据库发起攻击。
因此,非常有必要对接口的返回值做统一的封装。
例如下面这样:
{
"code":0,
"message":null,
"data":[{"id":123,"name":"abc"}]
}
TOP