【问题标题】:What are the security risks if I disclose database field name to web user interface?如果我向 Web 用户界面披露数据库字段名称,会有哪些安全风险?
【发布时间】:2014-07-05 06:21:33
【问题描述】:

我想让程序更简单,所以我在输入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;
}

这也可以使字段名有效

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

【问题讨论】:

    标签: sql database security web


    【解决方案1】:

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

    如果您节省时间将输入名称映射到数据库字段名称,您将需要花费大致相等的时间来验证字段名称实际上是在用户可以在您的数据库中访问的字段。无法绕过此验证,因为否则您的数据库将暴露于试图获取您未发布的字段(例如 ID 和哈希)的黑客攻击。这很糟糕,因此您需要构建该验证层。

    另一方面,如果您将无意义的 ID 映射到有意义的 ID,则不需要验证,因为是您的程序生成了有意义的 ID。本质上,验证步骤是内置于流程中的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多