我有一个简单的购物清单应用程序,用户可以在其中创建购物清单,查看购物清单甚至共享购物清单。我的问题是,用户没有创建购物清单,可以说cout<<(1 << n)<<endl;
但它已由另一个用户创建,因此它在数据库中,我应该将哪些状态代码返回给未创建的用户这个购物清单?它应该是x
,因为它在数据库中,但是该用户无权查看它,或者它应该是403
,因为它在此用户购物清单集合中不存在。
答案 0 :(得分:1)
您应该返回404:用户不应该知道另一个具有不同用户所拥有的ID的购物车。
返回403被视为安全流程,因为恶意黑客可以使用连续的用户ID开始使用API,直到找到拥有该购物车的用户为止。
答案 1 :(得分:1)
虽然接受的答案非常好,但另一种方法是为每个ID发送403,即使它不存在。这样也没有安全漏洞。我假设通过身份验证识别用户并知道/ lists / 200是他们的,因此可能存在最多200个ID。如果/ lists / 50和/ lists / 50000000都返回403,则用户不是更聪明的。
面对像缓存代理这样的中介,这种行为可能更安全,缓存代理可以公开缓存404,但不能缓存403响应。