在html中存储表和列名称

时间:2018-01-21 13:25:13

标签: jquery html mysql

我目前正在开发一个向页面输出许多输入字段的系统。为了跟踪值需要存储在数据库中的位置,HTML看起来像这样:

<input id="foobar" data-table="foo" data-column="bar" />

然后jQuery使用.data('table').data('column')作为参数传递给服务器端,以将值定向到相关的表/列。

问:即使服务器端的所有内容都已正确转义,这是否存在安全隐患?是否在html中公开了表名和列名,使页面更容易受到攻击?

3 个答案:

答案 0 :(得分:2)

安全风险可能意味着很多事情。就SQL注入而言,如果您正确地转义所有内容(或使用参数化查询),它应该没问题。

如果您认为人们知道您的数据库架构的某些细节存在安全风险,那么是的,确实如此。例如,如果有人在您的应用中找到了另一个易受攻击的地方,那么现在他们可以更精确地确定架构和攻击,而不仅仅是猜测表名。

如果你确定一切都是安全的,那可能不是什么大问题(但我们真的知道吗?......)

TL;博士;也许......也许不是......可能不是什么大不了的事。

答案 1 :(得分:1)

以下是关于此主题的优秀讨论: https://security.stackexchange.com/questions/109961/exposing-database-fields-names-in-html

一句话:

  

这样做很常见。正如你所注意到的,有一个   保持代码简单的重要好处。

     

如果您确实有SQL注入漏洞,攻击者可以解决   使用INFORMATION_SCHEMA输出数据库结构。所以隐藏你的   数据库结构对你没有多大帮助。

     

该领域的另一个问题是质量分配漏洞。   也许允许用户更新其用户详细信息 - 姓名,电子邮件,   密码等。但他们不应该能够更新   字段“is_admin”。使用自动将表单字段路由到的代码   SQL语句,有时会出现这样的漏洞。

因此虽然这可能会删除顶部的一小部分安全层(通过向潜在的攻击者提供攻击面的一部分),但只要你的应用程序的其余部分是妥善保管。

答案 2 :(得分:0)

在html中使用表和列名称可以让任何人从页面源中看到。为什么你让其他人看到表和列名。应该避免。