【问题标题】:How to secure inputs in laravel 5.4如何在 laravel 5.4 中保护输入
【发布时间】:2017-08-25 11:52:21
【问题描述】:

我一直在互联网上搜索有关此问题的信息,但找不到确切的解决方案。

我认为当数据保存到数据库时,laravel 已经处理了验证。但是,当我检查数据库上的数据时,我可以看到接受 html 标签的记录,如<body> 等。当然,我不能在浏览器上显示它,因为它会破坏我的网站。

这是我使用控制器帖子上的请求保存数据的方法。

public function  submitTask(Request $request)
{
    Task::create([
     'task_title' => $request->title
    ]);
}

我的模型名称是Task。

我想保护我的数据免受 XXS 和其他 sql 注入的影响。

我应该怎么做?非常感谢。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    这就是它的设计方式。在将数据保存到数据库之前,您不应该对其进行转义。在那里,它是无害的。您应该在输出数据后对其进行转义。作为表示逻辑,这是 View 的职责,因此,在 Laravel 中,您可以在 Blade 中完成。在 5.0 之前,您必须使用三重花括号 {{{ }}},但现在默认情况下在 {{ }} 上启用。

    你可以阅读更多关于这个here

    【讨论】:

    • 这意味着所有的数据都应该放在三个{{{ ?里面
    • 对,你从Controller注入到View的所有数据。虽然从 5.0 开始您只能使用两个花括号,但默认情况下它会转义数据。
    • 一切正常,但是当我将数据添加到标题部分时,它在此代码 @section('title', {{ $data->title }}) 上返回错误 Parse error: syntax error, unexpected '<' (
    • 试试这个:@section("title") {{ $data->title }} @endsection
    • 很高兴我能帮上忙。如果您有更多疑问,请转到here。您一定会找到您想要的。
    猜你喜欢
    • 1970-01-01
    • 2017-10-12
    • 2016-07-09
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 2017-09-06
    • 2017-11-21
    • 2018-07-31
    相关资源
    最近更新 更多