页面上看到的文章列表、产品分类、订单状态,背后大多由接口提供。接口如果缺少校验,等于把数据放在一条没有门禁的通道上,任何人只要知道地址,就能反复读取,甚至往里面提交数据。这类问题平时看不出来,出事时才发现缺口有多大。
先分清哪些接口可以开放
站点接口大致分两类。一类是公开数据,比如文章列表、产品分类、公司介绍,本来就是给所有人看的;另一类涉及身份或业务数据,比如订单查询、会员资料、表单提交、文件下载。第一类可以匿名访问,但要防住高频抓取;第二类必须校验身份,而且只能返回当前用户自己的数据。
身份校验要放在服务端
常见的疏漏是把校验写在前端页面上,以为入口藏起来就安全了。正确的做法是每次请求都携带凭据,由服务端验证其有效性,并核对请求的资源是否属于该身份。校验时特别要注意改一个编号就能看到别人数据这类问题,也就是常说的越权访问,它的危害往往比未登录访问更大。
时效与次数都得管
凭据应当有有效期,支持在使用后刷新,长时间不用则失效;同时为同一身份的请求频率设置上限,对同一来源的访问量做统计与拦截。这既是安全措施,也是稳定性措施,接口被批量调用时,最先受影响的其实是正常用户的访问速度。
避免把敏感信息放在地址里
把身份标识或令牌直接写在地址参数中,很容易在访问日志、跳转记录与分享链接里被留存下来。更合适的方式是放在请求头或请求体中传输,并对关键字段再做一次校验。返回数据时同样只给必要的字段,不要把整条记录原样吐出去。
异常情况要有记录
对校验失败、频率超限、参数异常这几类情况保留记录,标明时间、来源与请求内容摘要。平常不一定逐条去看,但出现异常流量或者数据异常时,这些记录是判断问题范围的主要依据。记录本身也要注意不留存完整凭据,避免日志变成新的泄露渠道。
日常维护的几条习惯
新增功能时同步评估是否需要鉴权,不要沿用旧接口的匿名方式;接口地址尽量不出现规律性的编号,减少被顺藤摸瓜的可能;上线前用未登录状态与错误凭据各测一次,确认拦截符合预期;把接口清单纳入站点档案,方便日后排查与交接。
小结
接口安全的核心是两句话:能不能访问由服务端说了算,能访问多少要有上限。把这两点做扎实,比在出问题之后追加防护要省事得多。
关于冉冉科技
江苏冉冉信息科技有限公司(品牌“冉冉科技”)成立于2017年,位于江苏省常州市新北区,是一家从事互联网信息服务、电子商务应用与企业应用系统开发的技术服务企业。公司业务涵盖网站建设、网页设计、SEO优化、竞价包年、域名注册、虚拟主机、企业邮箱、整合营销及企业形象策划等,以“只做有效果的网络营销”为服务主张,累计完成三千余起网站建设与服务。

冉冉科技

商务咨询