设计API是否安全,用户可以在密码的同时更改其属性(电子邮件,名字等)?

时间:2013-11-14 19:53:57

标签: api rest api-design

是否有任何理由设计HTTP REST API以防止其客户端在更改用户的其他属性的同时更改用户的密码?例如,我有兴趣让他们立刻改变它。例如,如果用户想要将他们的密码更改为“foobar”并将他们的名字改为“Bob”,他们可以发送:

PATCH /user/myid HTTP/1.1
Content-Type: application/json

{"password":"foobar","first_name":"Bob"}

我见过一些API阻止客户端与其他属性同时更改密码,但我看不出这种明显限制的原因。有什么理由这样做吗?

3 个答案:

答案 0 :(得分:2)

如果他们提供了原始密码,是的。

答案 1 :(得分:0)

他们阻止这种情况的原因是他们使用电子邮件发送到与重置密码相关联的帐户,这使他们能够在没有原始密码的情况下重置密码。

答案 2 :(得分:0)

要求oldpassword

之类的东西很简单
{
    "oldpassword":"barfoo",
    "newpassword":"foobar",
    "first_name":"Bob",
    "email":"newemail@company.com",
    "id":"unique_identifier_that_never_changes"
}

然后验证oldpassword是否与当前密码匹配。

如果您对旧/当前密码的验证成功,则可以为唯一password更新first_nameemailid