Laravel:验证后端提交的数据

时间:2015-06-29 18:03:51

标签: php ajax forms validation laravel

我正在为一小组管理员构建一个应用程序,该应用程序将被密码锁定。把它当作一个小的“内联网”应用程序。随着我的帖子数据越来越大(许多输入字段,长格式),我想知道安全性。

我的应用程序是用AngularJS编写的,所以我做了一个完整的前端验证。

注意:我没有使用AngularJS的路由,Laravel正在处理这个问题。所有数据都是由Ajax调用发布的,Laravel正在数据库中插入数据。两个框架都在同一个域上运行。

所以,我在这里担心:

我还应该在后端验证数据吗?

这是我的想法。

  1. Laravel使用CSRF保护,因此无法提交数据 其他“外部”形式。
  2. 如果用户(管理员)根据需要提交字符串但不提交整数 (通过在数据库结构上定义),不会发生插入。
  3. Laravel转义输入数据,所以我假设不能执行SQL注入?我通过我的所有代码使用Eloquent ORM。
  4. 还有什么吗?一般来说,可以验证什么?只是输入类型?
  5. 额外的问题:如果我的应用没有落后密码,我应该做些什么?

2 个答案:

答案 0 :(得分:1)

一般来说,是的。

如果在处理前端时出错,您最终可能会以应用程序可能无法处理的格式发送数据。

此外,不能始终依赖来自客户端的数据。不同的浏览器可能以不同的方式运行,并且可能以不可预测的方式向您发送数据。

您应该验证最小/最大长度,格式(正确的电子邮件地址,文件名等)等,具体取决于后端的值类型。

答案 1 :(得分:0)

  1. 在通过ajax发送数据时,在请求标头中包含csrf令牌。
  2. 在控制器中接收到请求数据后,仅包括laravel验证,如下所示:

    $validationData = $request->validate([
        'title' =>'required|unique:posts|max:255,
    ]);