如果我向Web用户界面公开数据库字段名称有哪些安全风险?

时间:2014-05-16 17:34:00

标签: sql database security web

我想让程序更简单,所以我在输入html中使用表的字段名作为名称,

然后我可以节省一些时间将输入名称映射到数据库字段名称

但是,如果用户知道我的字段名称,是否存在安全风险?

(假设SQL注入已在服务器程序中处理)


更新1:

我不打算进行字段名称验证

我只是不想做这样的事情

$uid=$_POST['user_id'];
$ufname=$_POST['user_first_name'];
$ulname=$_POST['user_last_name'];

如果我这样做

$user_id=$_POST['user_id'];
$user_first_name=$_POST['user_first_name'];
$user_first_name=$_POST['user_last_name'];

我可以节省编码时间,并且不需要为一个数据考虑两个名称,并减少错误。

我也可以这样做以节省更多时间,因为我只输入一次名称。

$validField=array("user_id","user_first_name","user_last_name");

foreach ($validField as $field) {
    $orm[$field]=$field;
}

这也可以使字段名称

有效

所以我认为hacks无法获取未发布的字段

1 个答案:

答案 0 :(得分:2)

  

我可以节省一些时间将输入名称映射到数据库字段名称。

如果保存时间映射输入名称到数据库字段名称,则需要花费一个大致相等的时间来验证字段名称实际上是在用户可以在数据库中访问的字段。没有办法绕过此验证,因为否则您的数据库会暴露于尝试获取未发布字段的黑客,例如ID和哈希。这非常糟糕,因此您需要构建该验证层。

另一方面,如果您从无意义的ID到有意义的映射,那么您不需要验证,因为它是您的程序产生有意义的ID。从本质上讲,验证步骤已内置于流程中。

相关问题