【问题标题】:Security of PHP script, embedded or otherwisePHP脚本的安全性,嵌入式或其他
【发布时间】:2011-02-10 08:46:59
【问题描述】:

我很好奇 PHP 在嵌入了 PHP 代码的 HTML 网页(以“webpage.php”形式存在于服务器上的网页)或可能被 HTML 页面引用的 PHP 脚本(也就是说,一个 PHP 脚本实际上不是作为“something.php”存在于服务器上并由“webpage.html”引用的网页的一部分)。言归正传,让我们说,如果任何人都知道我的 PHP 脚本的源代码,那将是一个非常大的问题。我知道当您在浏览器中查看 PHP 页面的源代码时,不会显示 PHP 脚本,但是如果 PHP 服务器出现故障并且仍然加载 HTML(这甚至可能)怎么办,用户是否能够看到 PHP脚本? 更笼统地说,用户是否可以通过网络浏览器访问 PHP 脚本的源代码?如果可以,我该如何防止?

【问题讨论】:

  • 就像一个无关的注释,许多最安全的框架都是开源的,所以人们能够阅读源代码绝对不是一个安全漏洞,除非你正在做类似的事情"if ($_POST['password'] == 'secret12345') { ... }"
  • @byronh:所以我读你的 config.php 没关系?

标签: php html security


【解决方案1】:

如果 PHP 服务器发生故障而 HTML 仍然加载(这甚至可能),用户是否能够看到 PHP 脚本?

除了安全漏洞,这通常发生在有人弄乱服务器或跨服务器迁移站点并且 PHP 文件被转储到未设置为执行 PHP 的文件夹中时。这是您为 PHP 部署付出的代价,就像将文件放入文件夹一样简单。

虽然泄露 PHP 源代码从来都不是理想的,但您可以通过将所有敏感的部署信息(如数据库密码)放入位于 Web 根目录之外的 PHP 包含文件(映射到 / URL 的文件夹)来缓解这种情况,通常称为htdocs)。搞砸配置以泄漏它要困难得多。

(对于更大、更模块化的项目,您通常会在其中完成大部分处理工作。)

【讨论】:

  • 我是 PHP 新手,如何从我的网页代码中访问这些脚本?
  • 这与我的建议基本相同。您只需在“include_once”上使用“include”并给出文件的相对或绝对路径。
  • @bobince,感谢您的回复,我会确保我的重要脚本不在 htdocs 文件夹中。在其他阅读中,我还发现很多人加密他们的 PHP,你能推荐任何工具和策略来正确地做到这一点吗?
  • 我自己并不是 PHP 加密的忠实拥护者,因为它的开销更大,无法优化并且让调试变得痛苦。许多 PHP 加密方案仅用于琐碎的混淆;为了在泄漏的情况下使其真正安全,您必须将用于解密文件正文的密钥(再次)放在 webroot 之外的包含文件中。
  • 同意。我从来没有使用过代码加密。如果这很重要,那么可能有更好的方法来做到这一点。例如,我构建了一个电子商务服务器,它通过 REST 为我的 PHP 提供 SaaS,分离关键功能,例如将 CC #s 存储在单独的机器上。
【解决方案2】:

您可以做的一件简单的事情来防止简单的服务器错误配置是让 HTML 文件包含一个 PHP 文件,该文件位于文档根目录之外(位于或高于文档根目录的级别,通常是“htdocs” )。这样,如果存在短暂的错误配置,所有用户将获得包含文件的路径,但他们将无法直接在浏览器中加载该包含文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-02
    • 2015-07-14
    • 2012-01-15
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    相关资源
    最近更新 更多