我想知道php文件是如何实际安全的。为什么即使确切位置已知,也无法下载php文件?
当我将php文件上传到我的网络服务器时,让我们说到domain.com/files,我打电话给domain.com/files页面,我可以清楚地看到php文件及其实际大小。然而,下载文件会导致文件为空。
问题是:安全机制如何正常工作?
答案 0 :(得分:7)
Web服务器的职责是获取PHP脚本并将其交给PHP解释器,后者将HTML(或其他)输出发送回Web服务器。
错误配置的Web服务器可能无法正确处理PHP脚本,并以原始格式将其发送到请求的浏览器,这样就可以直接访问PHP脚本。
您的网络托管可能有一种机制来列出目录的内容,但除非它提供下载机制来为PHP脚本提供纯文本标题(而不是HTML)而不将其交给PHP解释器,它将作为PHP执行而不是服务。
为了能够下载原始PHP文件,服务器必须做一些额外的工作(可能通过另一个PHP脚本)从磁盘读取PHP文件并使用纯文本头将其内容发送到浏览器
答案 1 :(得分:2)
当您请求domain.com/files时,您的Web服务器将设置为显示该目录中的所有文件。
当您请求实际的php文件时,Web服务器会执行它并将结果输出给您 - 而不是源代码。
当然,可以配置上述两种方法。您可以切换目录列表并禁用php文件的解析,以便输出实际的文件内容/源代码。
关闭目录列表通常是一种很好的做法。
答案 2 :(得分:1)
当您首次在服务器上安装PHP时,它会重新配置Apache,以便在请求.php文件时,Apache会将处理交给PHP。 PHP然后处理文件中的代码,并返回PHP代码echo
编辑或print
编辑到Apache的任何文本,然后通过网络将其发送回请求PHP文件的人。< / p>
“安全性”只是因为Apache不仅仅提供PHP文件,而是将其交给PHP处理器执行。如果未正确配置Apache或使用无法识别PHP的服务器软件,则将原始PHP文件 发送给客户端。
答案 3 :(得分:0)
简短回答:由于服务器配置为执行PHP文件并返回结果,因此您永远无法从外部访问PHP源代码。所有代码都由服务器立即执行。所以,回答你的问题:
安全机制是.php文件在请求时由服务器自动执行。
答案 4 :(得分:0)
这是一个巨大的误解。当您尝试通过端口80访问PHP文件时,您的请求可能通过Web服务器运行,该服务器对文件执行某些操作。在PHP的情况下,它通过PHP解释器运行该文件,这导致该文件创建一些输出, 是发送给您的。
您可以通过删除该文件类型的解释器轻松下载PHP文件。如果Web服务器没有任何特殊功能,并且不理解该文件,则只需让客户端下载它。