【发布时间】:2009-12-11 03:39:57
【问题描述】:
如何在不暴露数据库表结构的情况下在网页中命名字段名称?
【问题讨论】:
-
很好的问题。 =)
标签: php forms view naming field
如何在不暴露数据库表结构的情况下在网页中命名字段名称?
【问题讨论】:
标签: php forms view naming field
只需在 HTML 中将它们命名为其他名称,然后手动映射数据库字段名称和 PHP 代码中的 HTML 字段名称。
但实际上,如果您使用prepared statements 并执行适当的授权和错误检查,那么人们是否知道表字段名称应该无关紧要。
【讨论】:
如果您认为这是一个问题,我假设您可以重命名输入字段名称。无论如何,您都需要将它们链接到正确的 SQL 列。
这将是通过默默无闻的安全。
然而,小心处理应用程序中的输入(以避免 SQL 注入)听起来是一种更明智的方法。
【讨论】:
我通常会添加前缀和后缀以方便清理/处理。
例如,如果一个字段必须只包含字母,而不能包含其他任何内容,我将其命名为 tx_field_name,否则如果可以包含过滤后的 html、hf_field_name 或完整的 html hx_field_name...脚本谁'将使表单知道如何清理和检查前缀基中的值。
但是如果你的意思是明确地隐藏数据库的列名,那么,给它你想要的名称,foo,bar,或者添加随机后缀,甚至将_替换为- (在 html 字段名称中允许,但在数据库列名称中不允许)
p.s:我希望你不使用类似的代码
$values = $_POST;
$n_val = count($values);
$i = 0;
foreach($values AS $key => $value){
$pairs .= " `$key` = '$value' ";
if($n_val > $i){
$pairs .= ', ';
}
}
thedbyouprefer_query("UPDATE table SET $pairs WHERE id = '42'");
处理表单,但用 php 映射它(..和一些准备好的 staements 不会是坏的)
【讨论】:
如果这确实是您关心的问题,那么只需使用 field1、field2(或 f1、f2)并将它们映射到您实验室手册中的数据库字段。但是,除非您从 HTML 代码进行数据库调用,否则仅通过查看带有字段名称的表单就几乎无法收集到有关数据库结构本身的信息。
【讨论】: