GET操作与获取资源有关。它非常好,但是在某些情况下您想要例如
/:帐户ID /交易
现在,假设已经存在身份验证和授权,我如何确保某人不会猜测其他用户的:accountID并获得不属于其帐户的交易?
除了帐户ID的后端验证之外,还有其他解决方案吗?
我无法从GET更改为POST,也无法使用标头,因为该API已被客户定义并接受。
答案 0 :(得分:2)
您可以每次创建 authentication 令牌以验证请求,同时创建令牌时,您必须使用int val = 55;
var power = Math.Ceiling(Math.Log10(val));
int calcNum = (int)Math.Pow(10, power);
// outputs 100
或username
代表用户。< br />
其次,在验证令牌时,您可以检查userid
属于名称/ ID匹配的用户,否则返回错误。
这样,将accountID
与用户ID /名称进行匹配会产生开销,但这将解决您的问题。
干杯!
答案 1 :(得分:0)
我认为您可以尝试对帐户ID使用自定义哈希逻辑。可以在服务器端使用相同的哈希逻辑来获取实际值。这样,您可以保护用户猜测帐户ID的直接方法。
注意:我建议采用上述方法以及后端帐户ID验证。
例如:如果帐户ID:1000,则在服务器端对其进行哈希9888,将其映射回实际值。 (您可以增加哈希的复杂性)