【问题标题】:Using the same column name in MySQL and in HTML在 MySQL 和 HTML 中使用相同的列名
【发布时间】:2015-02-04 14:08:54
【问题描述】:

我正在开发一个 PHP、MySQL 应用程序。我遵循这个原则,我在 MySQL 表中使用相同的列名作为 HTML 变量名。

我发现它确实是一种很好的设计技巧:

  1. 我遍历 $_POST 变量名,并更新表。由于列名和变量名相同,更新数据库时出错的可能性较小。

遵循这样的设计技巧是一种好习惯吗?我不是专家,这会暴露我们的数据库结构吗?

我也在考虑对上述设计进行变体,在创建数据库列时添加一些用于 HTML 变量的字符串。

【问题讨论】:

  • 好吧,它会将您的结构暴露给知道您正在做的事情的人!但大概您已经采用了其他最佳做法来保护您的数据。
  • 我做同样的事情,我不认为显示你的数据库列名有问题,但是在编写查询时应该格外小心,确保它们被正确清理,不幸的是参数化查询不能用于过滤列名
  • 只要确保将列名列入白名单
  • 攻击者可以很容易地将 SQL 注入作为列名发布,因此请确保您对列名进行转义,正如@Ghost 所说.. 制作白名单

标签: php mysql database performance


【解决方案1】:

这适用于列名,这是一个很好的做法。我已经成功地将它用于表格和视图。

其他人指出了一些值得重复的内容:您需要保护您的应用免受黑客攻击。如果一个坏人试图向你发送一个包含虚假列名的网络请求,你肯定不希望你的代码通过它们。尝试在对数据库服务器的请求中使用来自不受信任来源的列名会带来很大的安全风险,尤其是对于 INSERT、UPDATE 或 DELETE。您需要对应用中确保列名干净的部分格外小心。

注意事项:区分大小写。在 MySQL 中,您在列名大小写敏感方面处于良好状态。但是表名大小写可以根据 MySQL 服务器运行的操作系统而改变。为了获得最佳可移植性,您可能应该将表名全部小写。这是该主题的一篇文章。 http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html

如果您将此项目移植到 Oracle,您会发现自己在列名中混淆了大小写。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2011-04-21
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    相关资源
    最近更新 更多