在POST调用中是否存在将登录凭据作为数据参数传递给REST API的安全问题?

时间:2012-09-27 02:36:50

标签: django rest tastypie

我有一个django网络应用程序,其中包含使用TastyPie编写的RESTful API。我想允许我的移动应用程序访问使用用户名和api_keys的API,但很难知道将api_key返回给移动客户端的最佳方法。

我正在关注此处提供的资源代码: How can I login to django using tastypie

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

以下是帖子请求的示例:

  

使用数据{'username':'我'向http://myapp.com/api/user/login发帖,   '密码':'l33t'}。

2 个答案:

答案 0 :(得分:4)

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

  • 发布用于身份验证的用户名和密码并不安全。它可以闻到。
  • 话虽如此,以这种方式提交用户凭据是我经验中经常做的事情。一个好的做法是在对用户进行身份验证后将记忆令牌(或在您的案例中为API密钥)返回给用户。除了持久会话之外,优点是如果某个恶意用户获得了API密钥,则可以轻松地重置它,而无需重置用户的用户名/密码(尽管最好这样做也是个好主意)。当然,缺点是记住令牌/ API密钥通常存储在不安全的地方,如浏览器cookie /错误地存储在某些github仓库的源代码中。

因此,POSTing身份验证凭据是否具有嗅探功能,没有。你能做到/做完了,是的。 当然,如果您需要更高的安全性,可以在此上下文中查看HTTPS是否适合您。

答案 1 :(得分:2)

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