首页 > 解决方案 > Laravel:防止 Sql 注入 Wild Card 或 Like 子句

问题描述

我想问,如何防止SQL注入通配符或Like Clause的脚本

这是我的脚本

$user_location = DB::table('store_locator')
->Where('city','like','%' . $inpaddress . '%')
->orWhere('store_address','like','%' . $inpaddress . '%')
->get();

像这样使用可以吗?

'%' 。$输入地址。'%'

谢谢。我希望你能提出更好的建议。谢谢..

标签: laraveleloquent

解决方案


Laravel 默认情况下可以很好地防止 sql 注入。如果您仍然有疑问并且您的 PDO 配置有些混乱,您可以尝试。

 'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
            'options'   => [
                \PDO::ATTR_EMULATE_PREPARES => false
            ]
        ],

设置\PDO::ATTR_EMULATE_PREPARES => false它会

'options'   => [
                    \PDO::ATTR_EMULATE_PREPARES => false
                ]

推荐阅读