Dan*_*nis 11 php mysql security hash url-rewriting
出于安全目的,在URL中隐藏真实数据库对象ID有哪些有用的解决方案?我发现其中一个解决方案是:
1)使用hashids开源项目
2)在创建对象时使用相同的旧md5来生成哈希并将其存储在数据库中,然后在url中使用它并通过它们查询,但缺点是通过自动递增的主键(ID)查询比哈希值.所以我相信哈希/ unhash的可能性会更好吗?
另外,正如我在Symfony上,是否有一些我无法找到或捆绑功能的捆绑包可以提供帮助?
请根据您的经验告诉我您认为有用的内容.
Sco*_*ski 13
这个问题已经被问了很多,用不同的单词选择(这使得很难说,"只是搜索它!").这个事实引发了一篇名为"PHP参考文献加密综合指南 "的博客文章.
通常,人们想要看起来短随意的URL.这不允许您有足够的空间加密,然后验证您希望混淆的数据库记录ID.这样做的最小URL长度为32字节(对于HMAC-SHA256),在base64中编码时为44个字符.
一个更简单的策略是生成一个随机字符串(请参阅random_compat以获取PHP5实现random_bytes()和random_int()生成这些字符串)并引用该列.
我所描述的攻击明显优于强力攻击,因此从加密的角度来看,算法被认为是破坏的,很容易恢复盐; 使攻击者可以在任一方向上运行编码,并使属性2无效以获得理想的哈希函数.
不要依赖它.