【问题标题】:Laravel: validating backend submitted dataLaravel:验证后端提交的数据
【发布时间】:2015-09-16 07:43:02
【问题描述】:

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

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

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

所以,我在这里担心:

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

这是我的想法。

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

额外的问题:如果我的应用没有密码,我应该做些什么不同的事情?

【问题讨论】:

    标签: php ajax forms validation laravel


    【解决方案1】:

    一般来说,是的。

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

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

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

    【讨论】:

      【解决方案2】:
      1. 通过 ajax 发送数据时,在请求标头中包含 csrf 令牌。
      2. 在控制器中接收到请求数据后,只需像这样包含 laravel 验证:

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

      【讨论】:

        猜你喜欢
        • 2013-04-28
        • 2018-11-08
        • 1970-01-01
        • 2017-11-01
        • 1970-01-01
        • 2018-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多