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

Php Laravel使用外键保存新实例的最佳安全性,php,laravel,Php,Laravel,我试图找到一个更好的安全性来使用外键保存新实例。 我有两个解决方案,两个都给我相同的结果 第一种方法是直接从请求输入中获取外键值 $post= new Post(); $post->post = $request->post $post->article_id = $request->article_id; $post->user_id = $request->user_id; $post->save(); 第二个尝试首先找到

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

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

$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中获取用户id(我假设这是您的$u POST'ed值?),则可能会有人用自己的用户id替换属于其他玩家的id的风险。我建议您从活动授权中获取用户id。也许是这样的

Auth::user->id
只有在允许调用者为其他人发帖(例如管理功能)的情况下,从$request中获取用户id才有意义


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

Hi,我不能使用user
Auth::user->id
,因为我的应用程序与laravel是分开的。Laravel将发送从前端发送的令牌的特定用户id。我的应用程序将合并来自中间件的请求。啊,好的。只要您确定用户id是正确的并且不能被用户操纵,那么就不存在安全问题。然后详细说明,方法2似乎最“雄辩”。如果你有大量的级联特性,在关联时需要雄辩地处理它们,那么这就是方法。如果不是,我仍然认为方法1是更可取的方法,因为它简单。如果你不需要的话,千万不要把事情复杂化。谢谢@Avenar它真的帮了我的忙。将坚持第一种方法:)