【问题标题】:Database / PHP security question数据库/PHP安全问题
【发布时间】:2009-09-16 09:07:29
【问题描述】:

我们正在为公司数据库开发一个非常简单的第一阶段 GUI。 目前我们的交付时间相当有限。 所以我们考虑使用一个简单的 SQL 存储过程来检索所有数据。 允许用户查看的数据取决于数据库以及我们的 Active Directory 中定义的安全级别。 因此,在获取所有数据后,GUI 仅显示用户有权查看/编辑的内容。

我的问题是这种方法是否存在任何明显的安全问题?还应该注意的是,Web 界面和数据库都位于我们的 Intranet 中。

我们的后端使用 W2K3、IIS、PHP 5、SQL 2005

任何反馈将不胜感激

乔纳斯

【问题讨论】:

  • 还可以考虑在您的 PHP 级别设置另一个级别的安全性

标签: php sql security


【解决方案1】:

考虑到交货时间(大约1个月),应该还可以。

第一件事:由于它仅在 Intranet 中,因此您的网站应该是相当安全的,因为外部世界无法访问您的网站。

其次,无论如何都应该禁用 XSS 和跨站请求伪造。

接下来,SQL 注入。

考虑到这几点,应用程序应该基本上是安全的。

【讨论】:

  • 谢谢,很高兴听到。也对 Randolph:如果我不清楚,我很抱歉。网络服务器不是朝外的,它只能在我们的网络内访问。问题是从正确的数据库表中获取所有请求的数据,然后使用 GUI 根据安全级别过滤显示的内容是否是一个主要的安全问题。
  • 乔纳斯,没问题。我担心安全,尤其是在阅读了一些大男孩的做法之后。因为它是内部的,你应该没问题。对于这个答案,我也给 Mauris +1。
  • 感谢兰道夫的回复。我希望我们会。看了你的回答,我感觉舒服了一点,主要是因为它也让我想起了要考虑预防的问题,这总是好的。
【解决方案2】:

不要在您的内部网络上放置面向外部的网络服务器。严重地。将其放入 DMZ。

就您的数据而言,您会在数据到达 Web 前端之前还是之后基于用户访问进行过滤?我建议在 proc 中进行。

另外,如果可以的话,我建议您也将您的数据库放在一个单独的盒子上,以增加安全性。

【讨论】:

    【解决方案3】:

    这是一个足够好的方法。这样,不允许用户查看的数据保留在数据库中。

    【讨论】:

      【解决方案4】:

      “所以在获取所有数据后,GUI 只显示用户有权查看/编辑的内容。”

      处理网站访问控制时的一个常见错误是在数据获取场景而不是数据写入场景中实现它们。这通常是假设“用户只会向我们发送关于我们告诉她可以编辑的资源的编辑请求”的结果。可惜……

      由于我无法在您的问题内容中发现这一点,我只建议您确保在构建 GUI 时以及在接收数据修改请求时有效地处理访问控制。

      如果我们考虑以下场景:

      1. 用户获取她有权合法访问的数据。
      2. 用户请求编辑该数据。假设现在显示了一个版本表单。
      3. 用户提交带有更改的表单。
      4. 在离开她的机器之前,用户截获了 HTTP 请求,并将已编辑资源的标识符替换为另一个她不应该访问的标识符。

      您的模型是否确保在收到编辑请求时也应用访问控制规则?从类似 SQL 的情况来看,这将转化为询问您是否使用请求模板,例如下面的第一个或下面的第二个:

      1) "更新 ... WHERE ID = x"

      2) "更新 ... WHERE ID = x AND (SELECT ... FROM ... WHERE userID = y)"

      如果您的模型更有可能是第一个模型,那么您可能遇到了授权模型问题。否则应该没问题。

      希望对你有帮助。

      某人。

      【讨论】:

      • 您好,是的,对于谁有权编辑某些字段,我们有非常严格的政策,所以我们会非常小心。非常感谢您对此事的意见!
      • 哦,进一步澄清一下,如果用户说他想编辑某个字段,服务器端将在发送更新查询之前检查以确保他有权这样做.所以表单操作等永远不会起作用,因为验证不在客户端。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      • 2013-09-25
      • 1970-01-01
      相关资源
      最近更新 更多