有青岛的老板问我,接口都是内部用的,还用得着做安全吗?我的答案是:接口一旦暴露在公网,谁都能调,不做安全,被人刷数据、越权查信息只是时间问题。信服无限青岛团队做接口开发时,最怕客户觉得内网接口天然安全。
防重放,别让请求被重复利用
同一段请求被人截下来反复发,系统就会重复执行。加时间戳和随机数,重复的拒掉。青岛不少企业的接口没有任何防重放机制,一段转账或下单的请求被抓包后就能反复提交,造成的损失往往在事后才发现。
防重放的关键是让每段请求只能用一次。青岛做接口的都清楚,带上时间戳限定有效期、再配上一次性的随机数,重复的请求自然就失效了。这种机制不复杂,但很多接口偏偏就漏了,吃亏也吃在这。
防越权,别让人看到不该看的
换个 ID 就能查到别人的数据,是最常见的越权漏洞。每个请求都要校验归属,不能只看登录状态。青岛不少企业的接口只验了用户是否登录,却没验他有没有权访问这条数据,改个参数就能看到别人的订单、别人的资料,风险极大。
越权分横向和纵向两种,都得防。青岛做接口的,会在服务端逐条校验这个用户对这条数据、这个功能有没有权限,绝不信前端传什么就认什么。前端能改的东西都不可信,这条底线守不住,接口就等于没上锁。
防泄密,敏感数据要护住
手机号、身份证这类敏感字段,能不返回就不返回。该脱敏的脱敏,该加密的加密。青岛不少企业的接口图省事,把用户的完整信息一股脑返回给前端,抓个包就全看到了,这些数据一旦泄露,责任跑不掉。
传输也得加密,全站走 HTTPS。信服无限累计上线 300+ 小程序,做这类接口开发的服务有经验。敏感字段该遮的遮、该加盐的加盐、该限频的限频,几道防线一起上,接口才不至于成了数据的漏斗。
接口安全的常见疑问
接口安全要做哪些
至少防重放、防越权、防泄密三样,具体按业务敏感度评估。
加了限频会不会影响正常用
合理设置阈值通常不影响正常访问,还能挡掉异常刷取,建议加上。
三道防线筑起来
把重放防住、把越权堵死、把敏感数据护住,接口才不至于成了缺口。信服无限青岛团队做接口时,最在意别人能不能改个参数就看到不该看的。你要在青岛,先测测换个 ID 能不能查到别人的数据。