Laravel - 使用{{{}}}进行SQL注入预防

Tom*_*ran -2 forms sql-injection input laravel

我在Laravel的页面中有一些表格.根据文档,三重括号 - {{{}}}可以逃避输出.所以当我使用时:

{{{ Form::text('name') }}}
Run Code Online (Sandbox Code Playgroud)

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

luk*_*ter 11

不,你明白{{{ }}}错了.他们逃脱了输出.
所以,如果你这样做

{{{ Form::text('name') }}}
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

<input name="test" type="text">
Run Code Online (Sandbox Code Playgroud)

它仍然会生成HTML代码,但它会被转义,所以它不会被解释为HTML而是纯文本

防止SQL注入

将数据保存到数据库时,必须阻止SQL注入.通常你在控制器中这样做.如果您使用的口才或Laravels查询生成器,你不必担心得多.它将处理可能的SQL注入点.只有执行原始SQL,您才需要注意.

来自Laravel Docs:

注意: Laravel查询构建器始终使用PDO参数绑定来保护您的应用程序免受SQL注入攻击.无需清除作为绑定传递的字符串.

  • 原始查询将使用`DB :: raw()`,`whereRaw()`和`DB :: statement()`.方法名称中几乎总是有"原始" (3认同)