在mysql中,“解释……”总是安全吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在mysql中,“解释……”总是安全吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1449字,纯文字阅读大概需要3分钟。
内容图文
![在mysql中,“解释……”总是安全吗?](/upload/InfoBanner/zyjiaocheng/900/544509e25136489e9b1f0d6e0bfe3109.jpg)
如果我允许一组用户向mysql提交“解释$whatever”(通过Perl的DBI使用DBD :: mysql),那么用户可以放入任何可以使任何数据库更改的内容,泄漏非平凡的信息,甚至造成重大数据库负载?如果是这样,怎么样?
我知道通过“解释$whatever”可以找出存在哪些表/列(你必须猜测名称)和大概有多少记录在表中或者有多少记录具有索引字段的特定值.我不希望人们能够获得有关未索引字段内容的任何信息.
DBD :: mysql不应该允许多个语句,所以我不希望它可以运行任何查询(只解释一个查询).只是解释,即使子查询也不应该被执行.
但我不是一个mysql专家,肯定有mysql的功能,我甚至都不知道.
在尝试提出查询计划时,优化器可能会实际执行一个表达式,以便提出索引字段将要与之进行比较的值吗?
explain select * from atable where class = somefunction(...)
其中atable.class被索引并且不是唯一的,而class =’unused’将找不到记录,但class =’common’会找到一百万条记录.可能’解释’评估一些功能(…)?然后可以写一些函数(…),以便修改数据?
解决方法:
“Explain”可能需要任意长的时间来执行,并使用任意数量的服务器资源,包括在某些事情耗尽时导致崩溃(例如,由于嵌套子查询太多而导致堆栈溢出).
“解释”很容易耗尽临时磁盘空间,服务器地址空间(在32位系统上,64位系统上的虚拟内存)或线程堆栈(故意恶意构建的查询).
通常,您不能允许完全不受信任的用户提交任何SQL的任何部分.即使没有访问单个表,如果他们努力尝试,他们仍然可能会崩溃服务器.
编辑:进一步的信息
使用匿名视图/具体化子查询的查询通常在EXPLAIN上执行整个内部查询到临时表中.
所以对表单的查询
SELECT * FROM (
SELECT h1.*, h2.* FROM huge_table h1, huge_table h2) AS rediculous
将永远解释并消耗tmpdir中的磁盘空间.
内容总结
以上是互联网集市为您收集整理的在mysql中,“解释……”总是安全吗?全部内容,希望文章能够帮你解决在mysql中,“解释……”总是安全吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。