在laravel中将'user'传递给javascript Ajax是多么安全?

时间:2016-07-01 15:24:33

标签: javascript json ajax laravel security

我已经问过这种情况,但是当您将数据直接传递给视图时,如下所示: 您获得$user = Auth::user();的用户,然后使用return view ('somepage')->with('user',$user);将其发送到视图,浏览器将获取视图中的所有用户数据(uername,password,user_id等..)。 并发现它应该是安全的。现在我在想如果你把它传递给负责更新视图的脚本呢? 像这样:

return Response()->json($user);

你正在疯狂地发射一个json,它以data的形式进入脚本,那么第三方也可以访问那个json数据吗?

1 个答案:

答案 0 :(得分:0)

不,您不希望将任何敏感数据传递给脚本或通过JSON。这两种资源都可以从客户端查看。

但是,您可以在将对象序列化为JSON并传递给浏览器之前从对象中删除敏感数据。

在您的Eloquent模型中,添加$hidden属性 - 此属性是一个属性数组,在将模型序列化为JSON时将删除这些属性。

因此,您的User模型将如下所示:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = ['password'];
}

然后,password将被删除,无法从客户端访问。

文档:https://laravel.com/docs/5.2/eloquent-serialization#hiding-attributes-from-json