我有一个php页面,它向客户端打印不同的选项:
foreach($strings as $i => $string){
echo '<a href="decrypt.php?string='.$string.'">Go with option '.$i.'</a>';
}
我希望用户只能在我的网页上检索$ string的内容,而不能通过嗅探HTML代码或类似的内容。字符串长度不长,小于100个字符,并且它是动态的。我希望网址“优雅”。我尝试使用
$string = gzencode($string);
$string = urlencode($string);
但它变成了一个字符串怪物。加密字符串有什么基本功能吗?另一个想法是在$ _SESSION中设置一个数组,但这会使我的网址无法共享。创建数据库是一团糟。我需要一些非常简单的东西,就像旧的罗马加密方法一样。只是不是因为有点太容易了。
答案 0 :(得分:0)
如果不了解您的用例以及您知道多少,就无法提供良好的建议。但我喜欢这样的思想实验,所以这里有一些想法供你思考。
加密和编码不一样,因此您首先需要决定是否要对数据进行模糊处理或保护。编码模糊了数据,使非技术人员难以阅读,加密使其难以阅读。
如果你想混淆php有函数http://php.net/manual/en/function.str-rot13.php,但由于这就像旧的罗马“加密”,你可以在之后对其进行base64编码。这将为您提供一个混淆且大多数用户无法读取的字符串,但大多数此处的SO将识别它是什么并能够读取它。
混淆数据的另一种方法可能是用另一个字符串对字符串进行xor。
您确实包含了您尚未准备好包含数据库,但也许您可以通过在文件中存储查找表来实现简单替换。使用链接中的密钥,然后在文件中查找值。
如果您想实际加密数据,您应该查看openssl_encrypt和openssl_decrypt并使用cbc模式使用密钥对其进行加密,如果您需要安全性,这是可行的方法。