如何防止 SQL 注入并提高 REST API 的安全性?
How to prevent SQL injection and improve security on REST APIs?
我是 REST APIs 的新手,正在开发将用于 iOS/Android/Web 应用程序的 API,但我不熟悉威胁类型API 的脸一经发布。
我到处都看到这些相同的提示:
- 使用 oAuth 2 允许交易,
- 仅接收和发送加密的 JSON Web 令牌,
- 使用SSL/TTL.
我认为使用 SSL/TLS 和 JWT 应该足以保证 sending/receiving 数据的安全性,但即便如此,我担心如果有人窃取凭据,可能会 SQL 注入。
我应该检查 SQL 注入字符串 (such as this one) 的请求吗?
如果我要支持用户登录,使用 oAuth 而不是 JWT 是否更有意义?
sql-i
使用准备好的语句会让你大有作为(further reading)
考虑使用 ORM 层来连接您的数据库(例如:gorm)
安全原则
在执行任何操作之前始终验证用户输入
对于每个操作,如果您知道通用选项集,请选择允许列表方法与拒绝列表方法(即,我将只允许字符串通过,如果它属于我的已知列表)
授权
- jwt 只是一种令牌格式(类似于您的身份证),您可以将 oauth 用于底层 authz(在允许您访问某些资源之前检查您的身份证)——阅读更多内容
- 不记名令牌(如 jwt)应始终通过 TLS/SSL 发送,以防止入侵者访问明文 jwt(rfc7523)
- 随着产品的成熟,您可能希望转移到开始分配存储在 phone 上的会话令牌的模型,但这通常伴随着处理撤销的复杂性(例如:when/how 我是否轮换会话令牌?)
我是 REST APIs 的新手,正在开发将用于 iOS/Android/Web 应用程序的 API,但我不熟悉威胁类型API 的脸一经发布。 我到处都看到这些相同的提示:
- 使用 oAuth 2 允许交易,
- 仅接收和发送加密的 JSON Web 令牌,
- 使用SSL/TTL.
我认为使用 SSL/TLS 和 JWT 应该足以保证 sending/receiving 数据的安全性,但即便如此,我担心如果有人窃取凭据,可能会 SQL 注入。
我应该检查 SQL 注入字符串 (such as this one) 的请求吗? 如果我要支持用户登录,使用 oAuth 而不是 JWT 是否更有意义?
sql-i
使用准备好的语句会让你大有作为(further reading)
考虑使用 ORM 层来连接您的数据库(例如:gorm)
安全原则
在执行任何操作之前始终验证用户输入
对于每个操作,如果您知道通用选项集,请选择允许列表方法与拒绝列表方法(即,我将只允许字符串通过,如果它属于我的已知列表)
授权
- jwt 只是一种令牌格式(类似于您的身份证),您可以将 oauth 用于底层 authz(在允许您访问某些资源之前检查您的身份证)——阅读更多内容
- 不记名令牌(如 jwt)应始终通过 TLS/SSL 发送,以防止入侵者访问明文 jwt(rfc7523)
- 随着产品的成熟,您可能希望转移到开始分配存储在 phone 上的会话令牌的模型,但这通常伴随着处理撤销的复杂性(例如:when/how 我是否轮换会话令牌?)