鉴于我有一个网站,其中大部分资源都有数字 ID(即 user.id question.id 等),但就像德国人回顾二战一样,我宁愿不向观察者透露这些,最好的方法是什么混淆他们?
我认为该方法将涉及 .to_param 和一些对称加密算法,但我不确定最有效的加密是什么以及它如何影响数据库中的查找时间等。
任何来自走过的道路的建议将不胜感激。
最佳答案
我发布了一个名为 obfuscate_id 的 Rails 插件。我不需要它是安全的,只是为了让 url 中的 id 对临时用户不明显。我还希望它看起来比长哈希更干净。
它还具有无需迁移或数据库更改的优点。这很简单。
只需将 gem 添加到您的 Gemfile
:
gem 'obfuscate_id'
并在您的模型中添加调用混淆 ID:
class Post < ActiveRecord::Base
obfuscate_id
end
这将创建这样的网址:
# post 7000
http://example.com/posts/5270192353
# post 7001
http://example.com/posts/7107163820
# post 7002
http://example.com/posts/3296163828
您也不需要以任何特殊方式查找记录,ActiveRecord
find
只是工作。Post.find(params[:id])
更多信息在这里:
https://github.com/namick/obfuscate_id
关于ruby-on-rails - 在应用程序中混淆数字 ID 的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6622594/