数据库/ PHP安全问题

时间:2009-09-16 09:07:30

标签: php sql security

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

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

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

非常感谢任何反馈

纳斯

4 个答案:

答案 0 :(得分:3)

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

第一件事:因为它只在Intranet中,所以您的网站应该相当安全,因为外面的世界无法访问您的网站。

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

接下来,SQL注入。

考虑到这些事情,应用程序基本上应该是安全的。

答案 1 :(得分:1)

请勿在内部网络上放置面向外部的Web服务器。认真。把它放在DMZ中。

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

在网站上处理访问控制时经常出现的错误是为数据获取方案而不是数据编写方案实现它们。这通常是假设“用户只向我们发送我们告诉她可以编辑的资源的编辑请求”的结果。不幸的是...

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

如果我们考虑以下情况:

  1. 用户提取她有合法访问权限的数据。
  2. 用户请求该数据的版本。让我们假设现在显示一个版本表格。
  3. 用户提交带有更改的表单。
  4. 在离开她的机器之前,用户拦截HTTP请求并用另一个她无法访问的标识符替换已编辑资源的标识符。
  5. 您的模型是否确保在接收编辑请求时还应用了访问控制规则?从类似SQL的场景中,这将转化为询问您是否正在使用请求模板,例如下面的第一个或下面的第二个:

    1)“UPDATE ... WHERE ID = x”

    2)“UPDATE ... WHERE ID = x AND(SELECT ... FROM ... WHERE userID = y)”

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

    希望它有所帮助。

    某人