4

我是 REST API 的新手,正在开发一个将用于 iOS/Android/Web 应用程序的 API,但我不熟悉这些 API 在发布后面临的威胁。我到处都看到这些相同的提示:

  • 使用 oAuth 2 允许交易,
  • 仅接收和发送加密的 JSON Web 令牌,
  • 使用 SSL/TTL。

我认为使用 SSL/TLS 和 JWT 应该足以保证发送/接收数据的安全性,但即便如此,如果有人窃取凭据,我还是担心 SQL 注入的可能性。

我应该检查 SQL 注入字符串的请求(例如这个)吗?如果我要支持用户登录,使用 oAuth 而不是 JWT 是否更有意义?

4

1 回答 1

2

sql-i

  1. 使用准备好的语句会给你很多帮助(进一步阅读

  2. 考虑使用 ORM 层与您的数据库交互(例如:gorm

安全原则

  1. 始终在对其执行任何操作之前验证用户输入

  2. 对于每个操作,如果您知道通用选项集,请选择允许列表方法与拒绝列表方法(即,如果字符串属于我的已知列表,我将只允许它通过)

授权

  1. jwt 只是一种令牌格式(类似于您的身份证),您可以将 oauth 用于底层 authz(在允许您访问某些资源之前检查您的身份证)——在此处阅读更多
  2. 不记名令牌(如 jwt)应始终通过 TLS/SSL 发送,以防止入侵者访问明文 jwt ( rfc7523 )
  3. 随着产品的成熟,您可能希望转移到开始分配存储在手机上的会话令牌的模型,但这通常会带来处理撤销的复杂性(例如:何时/如何轮换会话令牌?)
于 2021-01-01T18:37:45.067 回答