如何保护/验证GET参数

时间:2019-03-29 07:50:06

标签: rest api

GET操作与获取资源有关。它非常好,但是在某些情况下您想要例如

/:帐户ID /交易

现在,假设已经存在身份验证和授权,我如何确保某人不会猜测其他用户的:accountID并获得不属于其帐户的交易?

除了帐户ID的后端验证之外,还有其他解决方案吗?

我无法从GET更改为POST,也无法使用标头,因为该API已被客户定义并接受。

2 个答案:

答案 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,将其映射回实际值。 (您可以增加哈希的复杂性)