Forms 使用{{}}防止Laravel-SQL注入

Forms 使用{{}}防止Laravel-SQL注入,forms,laravel,input,sql-injection,Forms,Laravel,Input,Sql Injection,我在我的网页上有一些用拉维制作的表格。根据文档,三个大括号-{{}}可以转义输出。因此,当我使用: {{{ Form::text('name') }}} 我是否可以100%确定不可能将SQL注入命令插入此表单输入?不,您理解的{{{{}}}错误。它们逃避输出 所以如果你这样做了 {{{ Form::text('name') }}} 结果是: <input name="test" type="text"&am

我在我的网页上有一些用拉维制作的表格。根据文档,三个大括号-{{}}可以转义输出。因此,当我使用:

{{{ Form::text('name') }}}

我是否可以100%确定不可能将SQL注入命令插入此表单输入?

不,您理解的
{{{{
}}}
错误。它们逃避输出
所以如果你这样做了

{{{ Form::text('name') }}}
结果是:

<input name="test" type="text">
它仍然会生成HTML代码,但会被转义,因此不会被解释为HTML,而是纯文本

防止SQL注入 在将数据保存到数据库时,必须防止SQL注入。通常,您在控制器中执行此操作。如果您使用或Laravels查询生成器,您不必太担心。它将处理可能的SQL注入点。只有在执行原始SQL时,才需要注意

从:

注意:Laravel查询生成器始终使用PDO参数绑定来保护应用程序免受SQL注入攻击。不需要清除作为绑定传递的字符串


不,三重支架会漏掉潜在的危险输出。但您的问题表明您对web如何工作缺乏了解,也许您应该从一些基本的HTML开始,以了解为什么框架无法阻止客户端发送恶意数据。您错过了很多东西。三个大括号不是用于SQL转义的。如果您使用的是laravel,那么SQL注入就不是您首先应该担心的问题。我使用的是DB::table('table')->insert(['name'=>$name])。你是说这是生发牢骚?我应该使用{{{$name}}}吗?否。原始查询将使用
DB::Raw()
whereRaw()
DB::statement()
。方法名称中几乎总是有“raw”