Laravel:验证后端提交的数据


Laravel: validating backend submitted data

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

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

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

所以,我关心的是:

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

这是我的想法。

  1. Laravel使用CSRF保护,因此无法从其他"外部"形式
  2. 如果用户(管理员)根据需要提交字符串而不是整数(根据数据库结构上的定义),插入不会发生
  3. Laravel转义输入数据,所以我认为不能执行SQL注入?我在所有代码中都使用Eloquent ORM
  4. 还有别的吗?一般来说,什么是可以验证的?只是输入类型

额外的问题:如果我的应用程序不在密码后面,我应该采取什么不同的做法?

一般来说,是的。

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

此外,来自客户端的数据并不总是可靠的。不同的浏览器可能会以不同的方式运行,并可能以不可预测的方式向您发送数据。

您应该根据后端的值类型验证最小/最大长度、格式(正确的电子邮件地址、文件名等)等。

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

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