3

我有一个使用 TastyPie 编写的带有 RESTful API 的 django Web 应用程序。我想允许我的移动应用程序访问使用用户名和 api_keys 的 API,但一直在努力了解将 api_key 带回移动客户端的最佳方法。

我正在关注此处提供的资源代码: 如何使用美味派登录 django

我的问题是,这是否是一种在 POST 请求中将用户名和密码作为数据参数传递的安全方法。我应该没事吧?

以下是发布请求的示例:

使用数据发布到http://myapp.com/api/user/login { 'username' : 'me', 'password' : 'l33t' }。

4

2 回答 2

4

虽然可以嗅探通过 POST 请求发送的数据,但这并不一定意味着您不应该使用它来向 RESTful API 提交用户凭据。所以,直接回答你的问题:

  • 发布用于身份验证的用户名和密码是不安全的。它可以被嗅探。
  • 话虽如此,以我的经验,以这种方式提交用户凭据是经常发生的事情。一个好的做法是在用户通过身份验证后向用户返回一个记住令牌(或在您的情况下为 API 密钥)。除了持久会话之外,优点是如果某些恶意用户掌握了 API 密钥,则可以轻松重置它,而无需重置用户的用户名/密码(尽管这样做可能是个好主意)。当然,缺点是记住令牌/API 密钥通常存储在不安全的地方,例如浏览器 cookie/错误地存储在一些 github 存储库的源中。

因此,发布身份验证凭据是否可以防嗅,不。你能做到吗/完成了吗,是的。当然,如果您需要更高的安全性,您可以查看 HTTPS 在这种情况下是否适合您。

于 2012-09-27T02:59:32.223 回答
2

不,发送明文凭据永远不安全。任何嗅探流量(包括嗅探流量并将其全部转储到大日志文件中)的人都将拥有凭据。

于 2012-09-27T02:38:21.837 回答