我想加密Yii2 URL参数示例:http://localhost/school/backend/web/index.php?r=user%2Fview&id=20
20必须加密。
在Yii2中实现这一目标的最简单方法是什么?
发布于 2018-09-22 10:55:42
尝试对URL的一部分进行加密的问题是,客户端浏览器必须拥有用于加密的密钥。您可以通过HTTPS提供该服务,但这意味着任何人也可以获得密钥。或者,您可以在每个浏览会话中拥有一个键,但这会影响性能,而且可能会导致过度使用。
加密id参数的原因是什么?如果只是为了避免不安全的直接对象引用,那么您可以根据随机数据为用户创建一个散列(每个用户对象都需要一个唯一的哈希)。哈希将使正确猜测另一个对象的哈希变得困难,但并非不可能。本质上,这是由默默无闻而来的安全。
更好的方法是安全地处理查看其他ID。例如,我可以查看自己的对象/用户,但不能查看您的对象/用户。要实现这一点,您应该以编程方式检查用户是否有权查看所述对象。这确实意味着要编写更多的代码,但这是一种非常好的方法。
提交HTTP POST的请求只会保护您不受临时用户的影响。更熟练的用户(或攻击者)只需拦截POST请求,修改值并继续发送。
https://stackoverflow.com/questions/35226771
复制相似问题