php - 如果渲染失败,人们能看到我的 PHP 代码吗?

标签 php apache source-code-protection

为了让 PHP 运行,我必须在 Apache 网络服务器上启用 Includes。没有人能真正看到我的 .php 文件,因为当它们被服务器获取时,它们被渲染,而客户端看到的只是 css/html/whatever。它可能只是突出了我对 PHP 的新鲜感。

是否有人可以破坏我服务器的 PHP 呈现部分,以便客户在请求页面时能够看到我的 .php 代码?

如果这可能发生,我可以采取哪些预防措施来确保我的商业代码保持闭源?

同样,这可能不是真正的问题,但我很想知道。

最佳答案

正如其他人所说,将 .php 文件视为纯文本的配置错误的 Web 服务器将很乐意提供您的源代码。

然而,现在大多数框架(公共(public)的或内部的)都在网络可访问区域中保留很少的 php 代码。通常,文档根目录中只有一个 index.php 文件,它包含和调用完全位于文档根目录之外的其他文件中的代码。

通常,你会有这样的东西:

/path/to/proj/            <-- your project root
/path/to/proj/application <-- holds most of your appication code
/path/to/proj/lib         <-- third-party libraries go here
/path/to/proj/public      <-- your web server uses this as the document root.
/path/to/proj/public/index.php   <-- single point of entry into your applicaiton.  all requests are routed through here.
/path/to/proj/public/images      <-- static resources, like images, also live under the docroot.

重写规则通常用于通过一个公共(public) index.php 文件编码任何请求。

有了这样的设置,如果您的网络服务器配置错误,导致它传输您的代码,您就完全可以避免了。唯一的泄漏是您的 index.php 文件,它可能是几个 include/require 语句和单个函数/方法调用。一点都不敏感。

查看标准 Zend Framework 或 Symfony(或任何框架,真的),文件布局,以获得更清晰的画面。

关于php - 如果渲染失败,人们能看到我的 PHP 代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5616286/

相关文章:

php - try catch 失败的包含

php - Laravel/Ardent/User 模型编辑+保存

php - MySQL搜索查询错误

Oracle - 保护源代码

c# - 如何从 dll 文件中提取类的源代码?

php - Datamapper (Overzealous Edition), Codeigniter 和有很多说明

apache - 如何在不重新启动 oozie 作业的情况下重新加载 oozie 作业配置文件

java - 如何通过 Apache Olingo V4 Java API 使用字符串枚举

Apache mod_rewrite 路径名作为查询参数?

node.js - node-machine-id npm 库和实际唯一性