我正在与一个团队进行一个项目,我的一些团队制作了一个隐藏的显示来查看mysql查询。在现场这样做是否安全?该网站已经有一个月了。使用它是否安全这种技术?
<div style="display: none;">
SELECT *
FROM <statement>
LEFT JOIN <statement>
WHERE `username` = 'admin'
ORDER BY <statement> DESC
</div>
<div style="display: none;">
SELECT *
FROM <statement>
LEFT JOIN <statement>
WHERE <statement>
ORDER BY <statement>
LIMIT 10
</div>
答案 0 :(得分:8)
这简直是一个可怕的想法。你不应该让这样的信息可用。
答案 1 :(得分:5)
这绝对不是一个好主意。它为攻击者提供了大量有关数据库结构的信息。如果他们在某个地方找到了SQL注入漏洞,他们就会有一个很好的路线图,确切地说要运行哪些查询以完全搞砸数据库。
这就是开发环境的用途。
答案 2 :(得分:2)
其他帖子已经死了,但我想补充一点,如果隐藏你所指的查询的“技巧”是使用css将显示设置为“none”,那么不是没有安全。它假设任何查看您网站的攻击者都太愚蠢,无法弄清楚如何查看源代码。
我向您保证,如果某人足够聪明,知道如何首先执行SQL注入攻击,他们就知道如何在浏览器中打开页面并查看源代码。
更不用说正在扫描漏洞的机器人只看 源,设置display属性毫无意义。
答案 3 :(得分:1)
我之前已经完成了在时间敏感的情况下进行简短测试,其中需要快速调试问题。但如果可能的话,我会避免。
但是,我应该指出,这应该(理论上)不是安全问题。有关数据库模式的信息实际上只有在攻击者有办法在您的数据库上执行SQL命令时才有用。
肯定存在其他可能的风险,但如果您的安全状况良好,那么风险应该是最小的。不过要重申一下,我并不是在鼓吹这种方法,因为它仍然可以回过头来咬你。
答案 4 :(得分:1)
我不确定你为什么要这样做,但如果你想在浏览器中检查正在进行的SQL查询,你应该看看FirePHP(http://www.firephp.org/) 。它是众所周知的firebug firefox扩展(extenception ...)的扩展,它允许您从浏览器查看代码执行的查询。你必须为此安装一些服务器端的东西。
除此之外我不认为如果你不能真正执行任意SQL查询应该是一个很大的问题,但我认为你将更多的是一个目标。如果我戴着黑帽子,看到有人在源代码中打印了他们的SQL查询,我会比其他没有这样做的网站更快地思考,因为他们可能会做其他奇怪的(愚蠢的)东西。