PHP安全性,是代理文件的解决方案吗?

时间:2011-08-22 07:45:36

标签: php html ajax

因此,如果您有一个PHP页面,而如果有人加载该页面,他们可能看不到服务器端运行PHP代码;如果他们抓住了源代码,那么该文件本身仍然是公开可用的,因为如果你让它不公开,那么这个人将无法加载该页面。

因此,有人可以用正确的知识“抓住”该文件,然后阅读服务器端脚本。

因此制作'代理'并不安全。例如,AJAX调用PHP页面(称为脚本处理程序)并将前2个char作为id的字符串传递给要运行的PHP脚本,其余的字符串是该脚本的数据,然后是脚本处理程序根据数字运行并包含并返回随后显示的回显HTML。

你们觉得怎么样?我已经完成了这个并且它工作得很好,如果我抓住源码,我得到的是一个带有div容器的HTML页面和一个带有ajax调用脚本处理程序的javascript文件。

2 个答案:

答案 0 :(得分:6)

否。如果有的话,你的“解决方法”无法解决问题。

如果客户端(浏览器)从网络服务器询问“资源”(例如某个页面),则网络服务器不会仅仅在磁盘上找到资源时提供资源。

如果您配置好网络服务器,它就会知道

  • .html,.gif,.png,.css,.js文件可以按原样投放。
  • 必须首先执行.php,.php5,.cgi,.pl文件 ,并且必须提供结果输出

因此,通过正确配置的服务器(默认情况下正确配置了大多数不错的Web服务器),只需通过调用页面来获取PHP源是不可能的 - 网络服务器将知道执行源并返回结果。

但是

编写自己的“上传/下载脚本”时遇到的最常见错误之一是允许用户上传/下载.php(或其他可执行文件)文件。如果您自己的脚本通过从磁盘读取并将其写入网络来“提供”.php文件,则用户将能够看到您的代码。

解决方案:

  • 除非您知道自己在做什么,否则不要编写脚本。
  • 避免没有发明在这里的综合症(除非你确定你需要更好的轮子并且可以让更好的轮子),否则不要重新发明轮子。
  • 不解决不存在的问题!

通过:

如果您的网络服务器配置错误并且只是将.php文件作为可查看/可下载文件提供,通过ajax调用它的“解决方案”不会改变此 ... Ajax仍然是客户端所以,任何客户都可以绕过ajax并获取脚本本身。

答案 1 :(得分:4)

如果您的Web服务器配置正确,用户永远不能查看PHP文件的实际内容。如果他们尝试,他们应该看到PHP脚本的实际输出作为您的网站服务器读取并执行它,然后将其作为对HTTP请求的响应传递。

此外,您需要了解用户仍然可以轻松查看AJAX请求提取的文件;他们需要做的只是安装Firebug,或者使用Chrome开发者工具,他们将能够看到从中获取文件的完整URL。

总而言之,首先你不需要对PHP文件使用这种“安全技术”,其次,“安全技术”不会阻止任何对你的数据感兴趣的人。 / p>