Laravel使用外键保存新实例的最佳安全性


Laravel Best Security for Saving New Instance with foreign key

我试图为使用外键保存新实例找到更好的安全性。我有两个解决方案,两者都给出了相同的结果。

第一种是直接从请求输入中获取外键值。

$post= new Post();
$post->post = $request->post
    $post->article_id = $request->article_id;
    $post->user_id  = $request->user_id;
    $post->save();

第二个尝试先找到它并使用associate。

    $post= new Post(['post' => $request->post]);
    $post->article()->associate($request->article_id);
    $post->user()->associate($request->user_id);
    $post->save();

第二种方法比第一种方法长。使用第一个或第二个有什么缺点吗,比如安全性、性能等?

如果你从$request中获取user_id(我认为这是你的$_POST值?),你就有可能让人们用自己的user_id代替属于另一个玩家的id。我建议您从活动授权中获取user_id。也许是这样的?:

Auth::user->id

只有当调用者被允许为其他人发帖(例如管理函数)时,从$request中获取user_id才有意义。

除此之外,这两种方法似乎都不错。我可能更喜欢使用方法1而不是2,只是为了让它尽可能简单。