查询Restful API传递用户名和密码

时间:2015-08-19 00:54:22

标签: rest service restful-architecture rest-security

我正在为我的用户构建Restful API。

我有这些:

1. GET - >用户/ {id}这是通过Id获得的 2. POST - >用户/ {DTO}这是添加
3. PATCH / PUT - >用户/ {DTO}这是用于更新信息
4.删除 - >用户/ {id}删除
5.删除 - >用户/ {username} / reset_pass重置密码
6. POST - >用户/?用户名= {用户名}&密码= {密码}

所以我对5号和6号(特别是6号)有点不确定。

我想知道你对此有何看法?在Body中的查询字符串中发送我的用户密码。

我认为Uber使用我用来重置密码的模式。你怎么看待这个?

由于

2 个答案:

答案 0 :(得分:1)

4. DELETE -> Users/{id} Removing 
5. DELETE -> Users/{username}/reset_pass Reset Password 
  • 这不一致。您可以通过用户ID或用户名进行标识。如果您想要两者,请使用不同的URL命名方案。
  • reset_pass就像动词一样。考虑使用DELETE Users/{id}/password。根据密码的不同,DELETE可能适合或不适合用例。

6. POST -> Users/?username={userName}&password={password}

同样,这与您的网址格式不一致。如果您要为用户创建新密码,请使用POST Users/{id}/password

  

我想知道你对此有何看法?在Body中的查询字符串中发送我的用户密码。

将它建模为请求体是更简洁的,但它在安全性方面没有区别。除非您使用HTTPS,否则任何人都可以嗅探HTTP POST,无论您在哪个请求中决定传递数据。

答案 1 :(得分:0)

这只是我的意见,但在#6上可能会将密码放在POST请求的JSON主体中会更好。这样它就不直接在URL中(我认为REST原则说当你POST时你应该让正文成为被发布的对象。

当然,这些密码应该已经被散列,所以它不是太大了,但它看起来更安全/更好。