Ham*_*ite 5 mysql sql database security
假设我执行以下操作:
我们假设设置将由恶意用户进行探测.可能发生的最坏情况是什么?
一些想法:
嗯.聪明的用户可能会通过如下语法攻击:
select some_function_that_updates() from some_table;
Run Code Online (Sandbox Code Playgroud)
还有一种可能会破坏内存的拒绝服务攻击,例如:
select * from some_massive_table cross join some_other_massive_table;
Run Code Online (Sandbox Code Playgroud)
坦率地说,对于有经验的程序员来说,编写一个表现良好的查询是很困难的......即使他们试图编写一个好的查询,穷人也有什么机会
为此,您必须编写一个实际执行查询的"shell"应用程序.你不会直接让人们在SQL服务器上松动.这很粗鲁.
MySQL提供各种语句,如SHOW等,即使只有SELECT权限的用户也可以用来收集有关数据库服务器或我的数据库的信息.
不要在shell中执行它们.
可以从错误消息中获取其他信息.虽然可能不足以获得不正当的访问权限,但这些信息肯定有助于这样做.
不要在shell中显示它们.
数据库软件或我的脚本或脚本语言本身可能存在缺陷,这些缺陷可能允许访问者执行他们不应该通过此接口执行的操作.
不要使用"提升"权限做任何事情.不要在shell中执行除SELECT之外的任何操作.
这样做可能违反服务协议条款,特别是如果我使用共享主机.
真的不太可能.和.不要问我们这类问题.我们不知道.阅读你的合同.
你忘了的事.
设计糟糕的SELECT * FROM table, table, table, table可以进行数十亿行的外连接,实际上成为拒绝服务攻击.
因此,您必须在操作系统和SQL Server中启用所有"资源配额"功能.每个配额必须设置得尽可能小,任何资源配额问题都会导致立即出现"太多数据"的错误页面.没有例外.没有解决方法.