您是否应该或不应该将表单字段命名为与HTML字段完全相同的原因?
<input type="text" name="my_field_1" id="my_field_1" /> --> mysql row my_field_1
或
<input type="text" name="myField1" id="myField1" /> --> mysql row my_field_1
我唯一能想到的可能是HTML与Mysql的命名约定(可能是个人偏好),以及轻微的注入预防(显然字段名称必须更多......但所有值都应首先验证无论如何+使用真正的逃脱字符串)。
答案 0 :(得分:2)
我能看到这个问题的唯一方法可能是问题,即攻击者知道同一个表中不应通过表单更改的受保护列的名称,并使用该名称创建一个新的输入元素意图将该价值非法“滑入”表格。
您的程序 必须 无论如何都要在程序级别过滤掉,因此在实际列名称之后命名表单字段没有问题。 您只需要注意不要遍历每个可用的表格列或表单字段,但要对更新内容感到挑剔。
次要的,非常遥远的风险是您在表中公开列名。因此,如果您对安全性非常偏执,您可能希望为表单字段指定与其列不同的名称。但我看不出任何真正的必要性。
答案 1 :(得分:2)
如果您正在验证,那么不要,但不要将验证限制为您对表单的期望。如果您有一个带有所有者列的注释表,并且您盲目地从表单中的所有字段构建SQL更新语句,那该怎么办?因为您知道那里没有所有者字段?如果我使用TamperData会发生什么,这是一个firefox扩展,允许我向请求添加数据并添加所有者字段?
不要遍历所有字段并接受它们,确保只有您期望的字段存在并且没有额外的字段!
答案 2 :(得分:0)
实际上没有人会知道您使用了字段名称而不是自定义名称(除了一些典型的列名称)。他们现在怎么样?也许你使用自定义名称,也许不是;)
如果您使用相同的名称并且您的代码更易于维护,则可以使您的代码更易于理解。
但请阅读其他答案,了解可能出现的问题。
答案 3 :(得分:0)
同意。没问题。
事实上,如果您将字段命名为与Table字段相同,则可以执行一些很酷的循环方案,使更新或插入MySQL更加自动化。
答案 4 :(得分:0)
只要您的网站对SQL注入100%安全,这不是安全风险。所以我宁愿担心这个事实,而不是选择/使用字段名。
答案 5 :(得分:0)
不,因为您应该假设任何攻击者无论如何都可以访问您的整个源代码库,因此将其命名为不同的东西不会降低他们攻击您的能力。
保护应用程序的正确方法是正确编写它,而不是隐藏某人可能需要攻击它的信息(无论如何它们都可能得到它)。