与混淆ID的关系

时间:2017-12-13 21:34:15

标签: laravel validation hash relationship obfuscation

我的应用有问题。我想实现一个完整的ID混淆来隐藏每个模型的id。这是个好主意吗?

我已经实现了这个精彩的package,它给了我一个简单的特征,包括Hashing ID&Route Model Binding< 3

但是,我在开发测试时遇到了问题......当我想测试时,例如发送一个ID的POST,有点烦人,因为我必须在提交之前散列该ID&gt ;。<

但我的大问题是指客户提交表格与关系的时候!

表单显示不同的输入,其中一些是设置关系的 select ,例如,role_id。所以客户发送:

{
    name: 'Username',
    email: 'mail@mail.com',
    role_id: 'Wtf10' // role_id is obfuscated :)
}

总而言之,问题在于我的控制器,在验证和分配角色时:(

public function store(UserRequest $request) // Problem 1 - Validation
{
    User::create($request->all()); // Problem 2 - Setting the correct role_id
}

所以有两个问题。我不知道如何解决它:

  1. 问题1 - 验证:我可以创建custom rule。但是,有没有更好的方法呢? :d
  2. 问题2 - 关系:我可以解析hasehd ID,类似于$role = Role::findIdBySlug($request->get('role_id'))->id但是omg,它需要我将这个机制应用于每个关系输入!?
  3. 那么正确的方法是什么?也许是一个Big Master Middleware of Love,它会在请求体中查找每个混淆的ID,并用解码后的ID替换它们? :S

    帮助!

    谢谢!

1 个答案:

答案 0 :(得分:1)

我希望对公开面对的ID进行混淆,而又不会增加太多开销。没有数据库更改,没有自定义路由模型绑定解析等。因此,我为此构建了一个程序包。但是,混淆“ id”是有问题的。所以我在自己的json中添加了“键”并隐藏了“ id”。在我的路线中,我可以互换使用id或混淆密钥。优先级中间件会在途中重新编写它们,以便laravel可以在内部使用常规id。我刚刚发布了软件包的公共版本,以寻求帮助。

https://github.com/fuqu-io/laravel-ids2keys