我如何编码某些$ _GET参数?

时间:2010-11-25 12:50:29

标签: php encoding

我目前正在使用base64_encode用于某些$ _GET参数,我不希望普通用户搞砸。 我想知道base64看起来不是太强或者不是吗?

我也不想制作某种大型编码,而不是那么重要的信息,但我不希望那些具有普通知识的用户会在get中混淆params。

我应该继续使用base64吗?目前,如果值为1,它会生成MQ==,因此很容易从URL中取出并解码,然后插入自己的。

4 个答案:

答案 0 :(得分:4)

Base-64 encoding无法以任何方式保护数据。这是一个简单的基本转换,比如使用十六进制而不是整数十进制。

如果您只想验证data integrity,可以使用与数据一起存储的盐渍哈希(带有密码盐)。例如,请参阅hashed message authentication code (HMAC)

答案 1 :(得分:3)

base64_encode() is not a security measure!它旨在通过通常仅传输ASCII的介质来发送二进制blob。

使用会话,或正确加密变量。

我建议只使用一个会话,然后将其存储在默认/tmp之外,以便用...进行测量。

ini_set('session.save_path', '/sessions');

答案 2 :(得分:2)

如果你想要一些真正的加密/解密,请看一下PHP的Mcrypt功能。 http://www.php.net/manual/en/mcrypt.examples.php

但是,由于URL规范在字符使用和URL长度方面有限,您可能希望使用POST而不是GET。

答案 3 :(得分:0)

取决于你想要做什么。

如果你只想混淆它(特别是当你在Javascript中生成这些URL时),你可以将ROT13应用于URL并交换一些额外的字符以使解码变得更加困难。

但是,如果应用程序的安全性取决于它,您可以在数据服务器端应用静态密钥对称加密,并在收到请求时对其进行解码。我认为有这样的框架。