MYSQL禁用SELECT BENCHMARK

时间:2010-09-18 19:39:24

标签: sql mysql sql-injection benchmarking

如何禁用mysql基准测试功能,因此不受盲目SQL注入攻击,例如“select if(user()like'root @%',benchmark(100000,sha1('test')),' false');“

select * from func没有显示功能基准。

亲切的问候 查尔斯

3 个答案:

答案 0 :(得分:1)

最佳做法建议是escape data before passing to the query或创建准备好的陈述。不幸的是,不仅基准功能是危险的,所以你需要禁用其他功能......

答案 1 :(得分:1)

我找到了这个答案!

....
echo preg_match("/^([\'\)\"a-zA-Z0-9])+([0-255[:ascii:]])+select+([0-255[:ascii:]])+([\-])+([0-255[:ascii:]])+$/","8' union select 1 from --");
echo preg_match("/^([\'\)\"\(a-zA-Z0-9])+([0-255[:ascii:]])+benchmark+([0-255[:ascii:]])+([\-])+([0-255[:ascii:]])+$/","select if( user() like 'root@%', benchmark(100000,sha1('test')), 'false' )--");
....

答案 2 :(得分:0)

@Charles我同意在没有首先解决根本原因(输入验证等)的情况下取消BENCHMARK功能就是把马放在购物车之前。但我不同意它是一个尖桩篱栅或完全没用。

假设(a)相对容易禁用,(b)禁用它不会产生新的漏洞,为什么不这样做呢?对我而言,这不是第二个防御措施,而是保护系统的第一步:禁用任何和所有服务&功能未被使用。否则你只是用一个更具潜力的工具武装攻击者的工具箱 - 更不用说一个记录良好并且内置于每个按钮BlackBox的工具!

我认为我对你的论点最大的问题不在于是否启用或禁用BENCHMARK的辩论,而是你假设参数查询是绝对可靠的。过分信任一个系统并且有一种虚假的安全感比不禁用BENCHMARK这样的功能要危险得多。谁说Oracle / Microsoft /等。不要在将来的版本中引入错误?谁能说它现在还没有等待被发现的错误?谁能说你可以相信每个从事代码工作的人?