Question: 21
Consider that local disk files are accessible via MySQL with commands such as: mysql> LOAD DATA LOCAL INFILE ‘/etc/passwd’ INTO TABLE mypasswords; What change could be made to stop any breach via this insecurity?
A. executing REVOKE LOAD FROM *.*
B. setting the --local-service=0 option when starting mysqld
C. executing REVOKE FILE FROM *_*
D. executing REVOKE FILE ON *_* FROM ‘ ‘@’%’
E. setting the --local-infile=0 option when starting mysqld
F. setting the --open-files-limit=0 option when starting mysqld
答案:E
解析:使用LOAD DATA语句导入数据时,可以导入server端主机上的文件,如果使用了LOCAL关键字则导入的是client端主机的文件。这会导致以下两个安全问题:
- 由于LOAD DATA LOCAL是一条SQL语句,解析发生在server端,文件从客户端主机到服务器主机的传输是由MySQL server发起的,MySQL server告诉client需要导入的文件名。如果server端是被恶意修改过,它可以读取client主机上client程序有权限访问的任意文件。因此最重要的是不要连接到你不信任的MySQL server上。
- 在从Web server连接到MySQL场景中,用户可以利用LOAD DATA LOCAL语句读取任意一个Web server有权限访问的文件。在这种情况下,Web Server使用的MySQL client就相当于另一个web服务器。
如何解决?
第一个问题,我们可以使用–ssl-mode或者ca证书来验证服务器身份。
第二个问题,也就是题目的问题,应该避免client端使用LOCAL关键字。
- 系统变量local_infile可以控制server端的LOCAL功能。启动server端时指定–local-infile=0,此时server端会禁止client使用load data local导入数据。此外在client侧,也有各种配置禁用load data local。
最后修改时间:2024-05-13 18:29:17
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




