【问题标题】:Is it safe to have tell Apache server to handle .js and .css files as PHP?告诉 Apache 服务器将 .js 和 .css 文件作为 PHP 处理是否安全?
【发布时间】:2010-11-02 07:39:23
【问题描述】:

根据我在这个问题中看到的答案:Link

我想知道,这样做安全吗?

假设我实现了这个并且请求了一个页面,其中有几个 JS 和 CSS 文件链接到它。文本文件是简单发送还是服务器首先解析它们?目前没有服务器来测试它。

另外,这是一种常见的工作方法吗?我认为设置文件以便始终根据用户输入获得正确的实现对于 CSS 和 JavaScript 而言可能非常困难。

【问题讨论】:

  • 你是在问“嘿,我很懒,想要尽可能简单的 Apache 配置。如果我通过 PHP 传递我的 CSS 会发生什么不好的事情吗?”还是您要问做一些更复杂的事情?

标签: php javascript css apache


【解决方案1】:

对于动态 CSS 和 Javascript,您不必总是将它们放在 .js 或 .css 文件中。您可以在那里做的实际上是链接到生成它们的 PHP 脚本,以便 PHP 不会解析所有其他非动态的 .js 和 .css 文件。通常,除非绝对必要(.net、RoR、Django 等),否则通过应用服务器/动态解析运行所有内容(尤其是媒体文件)是一个坏主意。

<link rel="stylesheet" type="text/css" href="mycss.css"/>

浏览器视为:

<link rel="stylesheet" type="text/css" href="mydynamiccss.php?param=somevalue" /> // this one would be dynamic on params, location or something else maybe colors etc.

您也可以使用动态 js 或 css 并通过重写推送它,因此它确实具有正确的扩展名,但它实际上是一个动态的 php 文件,如果您不希望您的链接和脚本标签具有不正确的扩展名.

【讨论】:

  • +1 这是一个比在 .js 和 .css 文件中扔 php 代码更好的解决方案
  • 如果您使用 PHP 创建 javascript 或 css,请务必设置 header("Content-type: application/javascript") 或 header("Content-type: text/css")。否则浏览器可能无法正确识别。
【解决方案2】:

这不是不安全的,除非您允许用户上传 css/js 文件。

【讨论】:

  • +1。对于大多数文件来说,这可能不会成为问题,但如果您的 js/css 文件中的一个碰巧包含字符串 '可能不会遇到麻烦,但仍不建议这样做。
【解决方案3】:

这并不常见,默认情况下 Apache 将 .js 和 .css 文件视为静态文件,这意味着它不做任何额外的处理,它只是发送它们。

您可以通过某种程序(例如 PHP)将 apache 配置为将任何扩展名的文件汇集到一起,但对于图像、css 和其他静态文件来说并不常见。

【讨论】:

    【解决方案4】:

    这样做的一个大问题是,它会严重阻碍 Apache 引导缓存标头的能力 - 它将静态文件视为比 php 文件更容易缓存。

    我绝对不会这样做。我可能还会质疑为什么他们会自动生成如此大量的 javascript。 This answer 作为自定义 javascript 行为的方法更可行。

    【讨论】:

      【解决方案5】:

      只要链接的 .css 和 .js 文件位于不同的服务器上,它就应该是安全的。您告诉 apache 要做的就是将 .css 和 .js 文件视为 php 来处理它自己提供的文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-25
        • 2016-01-15
        相关资源
        最近更新 更多