首页 > 解决方案 > 如何在 Laravel 5.5 中保护 DB::statement() 免受 SQL 注入?

问题描述

我想让用户创建一个数据库。查询如下所示:

DB::statement( 'CREATE DATABASE mydbname' )

我需要使用DB::statement而不是DB::select// DB::selectDB::update因为后面的命令不支持该create语句。

我想保护自己免受 SQL 注入,不幸的是,以下两种方法不适用于DB::statement

DB::statement( 'CREATE DATABASE :DBNAME', [ 'DBNAME', 'mydbname' ] );
DB::statement( 'CREATE DATABASE ?', [ 'mydbname' ] );

那么如何保护该DB::statement方法免受 SQL 注入?如果那不可能,我怎么能create在不使用原始 PHP-PDO 的情况下以受保护的 laravel 方式触发查询?

标签: phpsql-injectionlaravel-5.5

解决方案


推荐阅读