在PHP中保护字符串



你认为在PHP中保护字符串的最好方法是什么?我说的是隐藏它的内容,避免用户的恶意修改。

我们可以使用open_ssl函数,但我更喜欢使用更简单的解决方案,更兼容平台,更快,不需要公钥/私钥。

例如,可以将登录令牌保存在cookie中,或者用于创建支付系统的返回URL,其中我们需要知道购买的商品ID,但它不能被用户知道。

我认为这可以通过一些混淆方法(如使用字典替换字符)来完成,并使用尾部哈希来确保数据的完整性,但我想听听你的意见。

谢谢

由于"保护字符串"是非常模糊和广泛的,让我们使用您暗示的更具体的场景,例如cookie中的登录令牌或URL中的令牌:如果这些令牌是伪随机值,则不需要进一步"保护"它们。想想看。你生成一个伪随机值,它本身没有任何意义。它只有在服务器上有一些与之相连的数据时才有意义。如果用户知道令牌,它就会识别并将其与该数据连接起来。如果他改变了标记,它就变得没有意义了。如果令牌足够长和随机,并且在相对较短的时间内到期,猜测随机令牌是不可行的。

如果要使用某个函数加密这个令牌,它会变成与第一个令牌具有完全相同属性的另一个令牌。它仍然是一团伪随机数据,本身没有任何意义。无得无失。甚至在令牌中添加MAC之类的东西也几乎不值得,最终你只会得到一堆更长的伪随机数据。

令牌的安全性已经来自于它的无意义、长度和熵。加密不会进一步增强这一点。

最新更新