我是laravel开发的新手,我遇到了一个为数据库生成自然查询的软件包,叫做“laravel-ask-database”,有没有办法限制这个软件包访问哪些表?
2exbekwf1#
laravel-ask-database从db模式第34行获取所有表列表:
protected function getTables(string $question): array { return once(function () use ($question) { $tables = DB::connection($this->connection) ->getDoctrineSchemaManager() ->listTables(); if (count($tables) < config('ask-database.max_tables_before_performing_lookup')) { return $tables; } return $this->filterMatchingTables($question, $tables); }); }
字符串而且没有可配置的过滤器。但是,作为保护表的一个选项,您可以创建一个名为laravel-ask-database的附加MySQL用户,该用户具有特定于自定义的表权限。要将自定义laravel-ask-database连接添加到config/database.php,请使用以下配置:
laravel-ask-database
'connections' => [ ... 'laravel-ask-database' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => 'laravel-ask-database', 'password' => ..., ... ], ... ]
型接下来通过.env文件更改ask-database.connection的默认值(config/ask-database.php):
.env
ask-database.connection
ASK_DATABASE_DB_CONNECTION=laravel-ask-database
型这不会保护对受限表的SQL查询的构造,但会保护对它们的访问。替代方式:
希望这对你有帮助
1条答案
按热度按时间2exbekwf1#
laravel-ask-database从db模式第34行获取所有表列表:
字符串
而且没有可配置的过滤器。但是,作为保护表的一个选项,您可以创建一个名为
laravel-ask-database
的附加MySQL用户,该用户具有特定于自定义的表权限。要将自定义
laravel-ask-database
连接添加到config/database.php,请使用以下配置:型
接下来通过
.env
文件更改ask-database.connection
的默认值(config/ask-database.php):型
这不会保护对受限表的SQL查询的构造,但会保护对它们的访问。
替代方式:
希望这对你有帮助