记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

API安全评估,你需要这样一份核查清单

2017-07-11 07:35

本清单不仅适用于安全评估人员,也适用于API设计、测试和发布过程中的相关人员参考。

认证

  • 不要使用basic Auth(基本身份认证),使用standard auth(标准身份认证),比如JWT,OAuth;
  • 在身份认证、令牌生成、密码存储方面,不要重造轮子,使用标准的规范和方式;

JWT JSON Web Token

  • 使用随机的、复杂的密钥(JWT Secret)以抵抗对令牌的暴力破解攻击;
  • 不要从JWT的Payload部分提取算法信息,确保算法在后台(HS256 或 RS256);
  • 限制Token的过期时间(TTL, RTTL),越短越好;
  • 不要在JWT的Payload部分存储敏感信息,它很容易被解码(使用了base64编码);
  • 尽可能的使用HTTPS;

OAuth

  • 始终验证服务器端redirect_uri地址,可以采取白名单的方式进行控制;
  • 通过code而非tokens的方式进行信息交换(禁用response_type=token);
  • OAuth认证过程中,state参数中使用一个随机的哈希值,用于防御女CSRF攻击;
  • 定义默认范围,并验证每个应用程序的范围参数;

访问

  • 对请求进行限制(节流),以地方DDoS/暴力破解攻击;
  • 使用HTTPS,以避免MITM(中间人攻击);
  • 使用 HSTS,以避免 SSL Strip 攻击;

输入

  • 根据实际操作使用适当的HTTP方法,包括:GET (读取), POST (创建), PUT (替换/更新) 和DELETE (删除一条记录);
  • 验证请求接受头部(内容协商)中content-type的类型,只允许您支持的格式,例如application/xml , application/json等,如果不匹配,则返回 406 错误;
  • 验证POST请求中您接受的content-type的类型,例如 application/x-www-form-urlencoded , multipart/form-data ,application/json等;
  • 对用户输入进行验证,以避免常见的漏洞,如 XSS、SQL注入、远程代码执行等;
  • 不要在URL中使用任何敏感数据(凭据、密码、安全令牌或API密钥等),使用标准的Authorization header;

处理

  • 检测所有端点是否受身份验证保护,以避免有断裂口;
  • 应避免使用用户自己的资源ID号,比如,使用 /me/orders 替代 /user/654321/orders;
  • 禁止使用自增ID,可以使用UUID替代;
  • 解析 XML 文件时,取保实体解析被禁用,以避免 XXE注入攻击;
  • 使用CDN进行文件上传;
  • 如果需要处理海量数据,可以使用Workers 和 Queues的方式快速响应,以避免HTTP 阻塞;
  • 不要忘记关闭DEBUG模式;

输出

  • 响应头中,启用:X-Content-Type-Options: nosniff 策略;
  • 响应头中,启用:X-Frame-Options: deny策略;
  • 响应头中,启用:Content-Security-Policy: default-src‘none’ 策略;
  • 对响应的content-type类型进行限制,例如,若返回application/json,则 content-type 应为application/json;
  • 不要返回敏感信息,如凭据、密码、安全令牌等;
  • 根据完成的操作返回适当的状态码,如200 OK , 400 Bad Request , 401 Unauthorized, 405 Method Not Allowed等;

欢迎大家积极补充!

传送地址:https://github.com/shieldfy/API-Security-Checklist

*文章来源:GitHub,转载请注明来自MottoIN.

知识来源: www.mottoin.com/103024.html

阅读:93585 | 评论:0 | 标签:技术控 API OAuth 安全评估

想收藏或者和大家分享这篇好文章→复制链接地址

“API安全评估,你需要这样一份核查清单”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云

本页关键词