数据库/PHP安全问题

数据库/PHP安全问题,php,sql,security,Php,Sql,Security,我们正在为公司数据库开发一个非常简单的第一阶段GUI。 目前我们交付的时间相当有限。 因此,我们考虑使用一个简单的SQL存储过程来检索所有数据。 允许用户查看的数据取决于数据库和Active Directory中定义的安全级别。 因此,在获取所有数据后,GUI只显示用户有权查看/编辑的内容 我的问题是,这一方案是否存在显著的安全问题?还应注意,webinterface和数据库都位于我们的内部网中 我们的后端使用W2K3、IIS、PHP5和SQL2005 如有任何反馈,将不胜感激 Jonas不要在

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

我的问题是,这一方案是否存在显著的安全问题?还应注意,webinterface和数据库都位于我们的内部网中

我们的后端使用W2K3、IIS、PHP5和SQL2005

如有任何反馈,将不胜感激


Jonas

不要在您的内部网络上安装面向外部的web服务器。认真地把它放在非军事区

就您的数据而言,您是在数据到达web前端之前还是之后根据用户访问进行过滤?我建议在过程中这样做


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

不要在内部网络上放置一个朝外的web服务器。认真地把它放在非军事区

就您的数据而言,您是在数据到达web前端之前还是之后根据用户访问进行过滤?我建议在过程中这样做


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

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

第一件事:因为它只在内部网中,所以你们的站点应该是相当安全的,因为外部世界不能访问你们的站点

第二,无论发生什么情况,都应该禁用XSS和跨站点请求伪造

接下来是SQL注入


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

考虑到交付时间(大约1个月),它应该是相当不错的

第一件事:因为它只在内部网中,所以你们的站点应该是相当安全的,因为外部世界不能访问你们的站点

第二,无论发生什么情况,都应该禁用XSS和跨站点请求伪造

接下来是SQL注入


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

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

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

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

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

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

如果我们考虑以下情形:

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

    1) “更新…其中ID=x”

    2) “更新…其中ID=x和(从…中选择…其中userID=y)”

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

    希望能有帮助

    sb.

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

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

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

    如果我们考虑以下情形:

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

    1) “更新…其中ID=x”

    2) “更新…其中ID=x和(从…中选择…其中userID=y)”

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

    希望能有帮助


    S.

    也考虑在PHP级别放置另一个安全级别,同时考虑在PHP级别上放置另一个级别的安全性,谢谢。也对伦道夫说:如果我不清楚,我很抱歉。Web服务器不是朝外的,它是acc