【问题标题】:Webepage with extension .html having PHP codes vulnerable? [closed]扩展名为 .html 的网页存在 PHP 代码易受攻击的问题? [关闭]
【发布时间】:2015-06-24 12:58:43
【问题描述】:

更改.htacces 文件以允许程序员在HTML 文件(扩展名.html)中使用PHP 代码会损害页面的安全性吗?

这就是为什么带有任何 PHP 脚本的文件都被赋予扩展名.php 的原因吗?

【问题讨论】:

  • 为什么要降级这个问题?这不是用来提问我们不知道答案的问题的门户吗?至少回答问题,然后降级
  • 如果您还没有阅读过stackoverflow.com/help/how-to-ask,您可能想阅读。回答您的评论问题:不,有些事情被认为是题外话。
  • 我认为这个问题很重要,尤其是因为它涉及安全和 PHP 的主题。这个问题应该由那些使用 PHP 的人来解决,尤其是那些使用 PHP 的人,并且可以根据他们对这个问题的经验发表意见。

标签: php html .htaccess security


【解决方案1】:

没有。如果文件被解释为 php 文件并执行,则不会产生任何安全问题。您甚至可以根据需要制作任何扩展名,如“.asp”、“.jsp”。此外,这可能听起来更安全,因为攻击者看到扩展名并认为它是一个 asp 文件。

但在我看来,这不是一个好的做法,可能会使开发更加混乱。我认为如果它是一个 php 文件,扩展名应该是 .php

如果您希望提供安全性,您应该检查 url 重写和隐藏扩展。这种方式比较方便。

【讨论】:

    【解决方案2】:

    实际上更改 PHP 文件的文件结尾是相当危险的。我亲身经历了一些问题:

    • 将您的项目移动到新服务器可能会导致网络服务器丢失您的配置
    • 在相当复杂的 Apache 配置中,可能有多个域可以访问您最初没有看到的项目;并且其中一种配置可能会忽略您的技巧
    • 您的网络服务器配置错误可能会使您的巧妙技巧变得无用(例如,通过使用默认配置)
    • 其他程序员可能会将您的 PHP 文件与 HTML 文件混淆

    如果其中一种情况发生,您的 PHP 文件中包含的任何程序现在都可以被所有人阅读。如果您的 PHP 文件中有配置设置(数据库连接等)或一些常见的编程错误 (print $_GET['search'];),每个攻击者现在都会关注它们。

    如果您真的想保留 HTML 文件结尾,请考虑使用 mod_rewrite。

    【讨论】:

      【解决方案3】:

      您可以添加到.htaccess 的唯一与安全相关的内容是用户身份验证。除此之外,.htaccess 无法提供任何东西来增强您的应用程序的安全性。

      不要为了安全目的而依赖 .htacess 体操。

      如果您要移植现有网站并分阶段进行,那么使用与您的应用程序的其他区域可能已添加书签或引用的 URL 相同的 URL 是有意义的;在这种情况下,您可以使用 .html

      如果可能,尝试使用重定向,您可以使用.htaccess 做到这一点;但在某些情况下(例如,如果您尝试将作为 POST 表单目标的现有文件转换为 PHP)添加重定向会使表单无法使用,因为有效负载将被丢弃。

      【讨论】:

      • 非常感谢,会记住这一点。但出于安全目的,我不想这样做。我只是想知道这样做是否是一种好习惯。另外,这是否会损害我的安全性而不是增强它?
      • 它在安全性方面并没有增加太多价值,而且只有在移植现有应用程序时才有意义。除此之外,它无法为项目增加更多价值。
      【解决方案4】:

      实际上,让包含 PHP 脚本的文件带有 .html 扩展名可以提供更多的安全性,而不是更少。这种被称为“默默无闻的安全”的安全性提供了少量的保护。当恶意黑客遇到 HTML 页面时,他/她可能会假设该页面是由 HTML 生成的,而不是包含 PHP 脚本的页面的输出。但是,如果黑客很老练,他/她可以通过检查 Web 服务器返回的标头信息来验证您是否在服务器上运行 PHP。最好设置 php.ini 设置expose_php = Off 以避免在标头信息中暴露 PHP;见Manual

      如果您使用 .htaccess 文件或能够修改您的 Web 服务器配置设置,它将通过 PHP 解释器解析所有 HTML 文件(包括那些包含纯 HTML 的页面)来影响性能。发送不需要 PHP 解析的页面无疑是一种浪费的努力,但是所涉及的时间量据说是微不足道的。如果您可以修改 Web 服务器的配置文件中的设置,那会更好,因为使用 .htaccess 文件可能会导致您的网站运行缓慢。

      这种安全性本身不足以提供最佳安全性。您仍然必须将所有表单数据视为可能受到污染并对其进行验证。了解您的表单值应该是什么并测试这些值。最好的安全性涉及多层保护。

      请参阅Manual,了解有关“默默无闻的安全性”的更多想法。请注意,该页面不建议将 URL 重写作为安全措施,尽管它是一个选项。人们应该对 URL 重写有一个很好的理解,因为这个主题远非微不足道。

      "...配置mod_rewrite很容易出错 变成安全问题。”(见Apache Week, mod_rewrite

      但是,如果您忽略在 php.ini 文件中设置 expose_php = Off,则 URL 重写可能不会像您想象的那样真正隐藏 PHP。如果您运行包含此行的 php 脚本:

      print_r(get_headers($url,1));
      

      当我将 $url 设置为我最喜欢的网站之一的页面时,您可以获得一些非常有启发性的信息,如下部分结果所示:

      Array
      (
          [0] => HTTP/1.1 200 OK
          [Server] => nginx/1.6.2
          [Date] => Thu, 18 Dec 2014 09:59:06 GMT
          [Content-Type] => text/html; charset=utf-8
          [Connection] => close
          [X-Powered-By] => PHP/5.5.11-2
      

      【讨论】:

      • “在安全工程中,隐匿安全是使用设计或实现的保密性来提供安全性。标准机构不鼓励并且不推荐通过隐匿实现安全。依赖隐匿安全的系统可能具有理论上或实际的安全漏洞,但其所有者或设计者认为,如果不知道这些漏洞,那么攻击者将不太可能找到它们。”说维基百科;)
      • “一般来说,隐蔽安全是最弱的安全形式之一。但在某些情况下,每一点额外的安全都是可取的。” -- php.net/manual/en/security.hiding.php
      猜你喜欢
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 1970-01-01
      • 1970-01-01
      • 2018-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多