gpt4 book ai didi

mysql - 如何禁用 OUTFILE 和 INFILE?

转载 作者:可可西里 更新时间:2023-11-01 06:36:58 33 4
gpt4 key购买 nike

据我所知,启用 OUTFILEINFILE 是非常危险的。任何允许其他人从系统写入和读取文件的东西对我来说都是危险的,因为我的服务器正在托管一个公共(public)网站。我知道最好的解决方案是用我的代码防止 SQL 注入(inject),但人有时会犯错误。所以,我想限制在我的 PHP 中使用的用户非常有限的访问权限。如果出现问题,损失将降至最低。

如何禁用OUTFILEINFILE

最佳答案

FILE 的用户权限与 LOAD DATA/INFILE/INTO OUTFILE 类型操作相关:

"The FILE privilege gives you permission to read and write files on the server host using the LOAD DATA INFILE and SELECT ... INTO OUTFILE statements and the LOAD_FILE() function. A user who has the FILE privilege can read any file on the server host that is either world-readable or readable by the MySQL server....

使用 REVOKE 控制 FILE 权限,来自 mysql CLI:

#change to mysql system db
use mysql;
#use the REVOKE (opposite of GRANT) to disable any FILE operations
#in all dbs for the specific user/host. use % to block all hosts.
REVOKE FILE on *.* FROM 'specificuser'@'specifichostname';

或者,如果遇到问题,您可以有选择地授予对特定数据库及其内部特定表的 FILE 操作。

此外,如果不完全禁用,您可以进一步调整控制,允许使用/tmp 等目录,使用 sysvar_secure_file_priv 系统变量限制数据文件的遍历。

有关这些的更多信息,请参阅手册: FILE Privilege REVOKE Syntax System Variable: secure_file_priv

这个问题很好地说明了如何最好地从“拒绝一切,根据需要特别允许”的心态来考虑安全性。与首先授予用户 ALL 权限然后有选择地撤销它们相反,由于不熟悉 mysql 中的 GRANT/REVOKE 系统,我经常看到这种情况。

关于mysql - 如何禁用 OUTFILE 和 INFILE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18168005/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com