我需要帮助来想出一个策略来处理我正在开发的PHP/MySQL应用程序中的对象in。基本上,不是像这样有一个URL:
/post/get/1我正在寻找类似这样的东西:
/post/get/92Dga93jh我知道模糊安全是无用的(我有一个ACL系统来处理安全问题),但我仍然需要隐藏in。这就是我被卡住的地方。
我考虑过为每个DB行生成一个单独的公共id,但一直无法找到创建真正唯一的id的方法。
我想我可以在MySQL自动增量行id离开和进入我的应用程序时对其进行加密和解密,但我不确定PHP的加密和解密方法有多“昂贵”。此外,我需要确保模糊的id保持唯一,这样它就不会解密为错误的值。
此外,由于我的域对象是相互关联的,所以如果我决定在表中生成并存储一个模糊的id,我希望避免给MySQL带来任何不必要的压力。
我的头撞到了墙上,因为我觉得这是一个常见的场景,但又不知道该怎么办。任何帮助都是非常感谢的!
发布于 2012-01-19 05:38:33
我只会用加盐的md5。它对99%的病例都是安全的。另外1%是当你因为你的数据被亲黑客窃取而使你的头在墙上摇晃的时候,将其影响降到最低变得至关重要。
所以:
$sql = 'SELECT * FROM my_table WHERE MD5(CONCAT(ID, "mysupersalt")) = "'.$my_checked_url_value.'"';并且可以使用类似的策略从PHP生成相同的内容:
<a href="/link/to/mypage/<?php echo md5($id.'mysupersalt'); ?>"> link text </a>希望这就是你要找的..
发布于 2012-01-19 05:34:02
只要你给出了9个字符的base62字符串-你可以遵循这个策略:
<代码>H19如果不是,请重复1-3
发布于 2012-01-19 05:34:10
使用单向散列,如md5等。
https://stackoverflow.com/questions/8917739
复制相似问题