【问题标题】:Send Plain or Encrypted Password in API [closed]在 API 中发送纯密码或加密密码 [关闭]
【发布时间】:2020-04-13 23:26:58
【问题描述】:

以前我使用 md5 进行解密,但后来我切换到 BCrypt,这是一个更好的选择。

假设我开发了一个 API,其中有一个用户登录服务。我尝试使用邮递员并通过传递所需的参数(即 usernamepassword)来调用此服务。

现在,我不知道这是否可能,但如果某些黑客拦截了我的请求怎么办?如果他能拦截它,那意味着他可以看到我在请求参数中发送的纯密码,对吧?

如果可能的话,在这里做的最好的事情是什么?是否必须在 API 中传入 Bcrypt 加密的密码?

附:我对我的 API 使用基于 JWT 的身份验证。

【问题讨论】:

  • 使用 HTTPS 。这正是它所要保护的。
  • 好的,但是如果我在 HTTP 上,除了我真正的问题是我们是否必须在 API 请求中发送加密密码?
  • 在 2020 年(实际上)不应该选择使用 HTTP。如果您使用的是 HTTPS,那么包括传输密码在内的所有流量都将使用适当的加密方案进行加密,该方案具有为此目的进行了严格审查。您在这里所做的基本上是滚动您自己的加密方案。你绝不能这样做。
  • 所以在请求参数中传递纯密码是一件好事,对吧?我只需要使用 HTTPS
  • 是的,如果您使用 HTTPS,浏览器将处理加密,而网络服务器将处理解密。拦截它的不良行为者只会看到几乎不可能破解的加密数据。

标签: laravel api jwt md5 bcrypt


【解决方案1】:

对您的 API 请求使用 HTTPS 而不是 HTTP。那么中间人攻击是困难的或不可能的。

始终使用 post 方法而不是 get 或任何其他方法来发送机密数据

“实施使用 TLS 和 HTTPS 将为传输的数据提供有效的加密和身份验证,以保护网站免受中间人攻击。这有效地阻止了对身份验证密钥等机密数据的解密”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-28
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 2021-01-04
    • 2016-06-12
    相关资源
    最近更新 更多