0

假设一个订购应用程序,用户“Ben”将能够通过发出

/订单/1

现在..在此之前,我已经验证了“Ben”(用户名/密码身份验证)并将用户名作为 cookie 发送(使用 sha1 校验和签名)。

在每个 http 请求上,我都会收到告诉我“Bent”仍然经过身份验证的 cookie,但谁能阻止他发出

/订单/23

其中 id=23 的订单不属于“Ben”。

所以我想我应该写一些逻辑来确保订单 23 实际上属于“Ben”......这是这种情况的最佳实践或模式吗?

我应该使用单独的“功能主键”,而不是串行主键 id 吗?

4

1 回答 1

0

我没有看到任何合理的自然主键顺序。为了使其不易被发现,您可以使用 UUID(意外找到 /orders/4886ed80-dd71-11e0-9572-0800200c9a66 的机会很小)...

但这将是默默无闻的安全。即使我无法猜出您订单的 UUID,我也可以嗅探您的流量,并且如果仅通过晦涩的 URL 提供安全性,我将能够对 Order 资源做任何我想做的事情。

这应该清楚地表明在这种情况下您不能跳过身份验证。

于 2011-09-12T19:01:07.143 回答