【问题标题】:Does using /bundles/ path for assets expose any security risk?对资产使用 /bundles/ 路径是否会暴露任何安全风险?
【发布时间】:2014-04-30 01:55:30
【问题描述】:

我在我的树枝模板中使用 /bundles/ 路径来存储图像, 例如

<link href="{{ asset('bundles/acmedemo/css/contact.css') }}" rel="stylesheet" />
<img src="{{ asset('bundles/acmedemo/images/image.jpg') }}">
<img src="/bundles/acmedemo/images/image.jpg">

这是否有任何安全风险,用户可能会知道我正在使用 symfony fw,并利用某些东西,或者用户可能会知道我的包名称,谁知道这会导致什么,或者用户可能能够热链接我知道可以通过服务器设置更正的文件,但是就混淆和安全性而言,这样做有什么问题吗?

请注意,我正在基于这个 fw 开发一个企业网站,并且我必须遵守保密协议等。它不像它是一个开源包或任何东西。

【问题讨论】:

  • "用户可能会知道我使用 symfony fw 并利用某些东西" --- 有这样的机会,没错。
  • 请记住,只有您的资产文件可通过web 文件夹(通过assetic:dump 复制/链接)获得。 PHP 脚本和配置文件不是。

标签: php security symfony twig assets


【解决方案1】:

好问题。

理论上不应该。 Symfony 应该足够安全,这样,即使知道您正在使用 Symfony 和/或什至您正在运行的确切版本,黑客仍然无法破坏您的应用程序。 (假设您已正确配置所有内容,包括您的网络服务器等)

但是,实际上,您的代码或某些供应商的代码中始终存在漏洞的可能性。您可能确实希望通过隐藏您正在使用的框架来让潜在的攻击者变得不那么容易,这样即使您的应用程序中存在漏洞,攻击者也不会知道您正在使用该特定的没有先尝试所有可能性的框架。

关于这个主题的一篇有趣的文章是Hide your Web stack。它基本上提供了以下提示,不仅可以混淆 Symfony 的使用,还可以混淆 PHP 和 Apache(或您正在使用的任何网络服务器):

  • (Symfony) 一些明显的步骤,例如替换默认的 Symfony favicon,不在生产环境中部署 app_dev.phpconfig.php,以及创建自定义错误页面。
  • (Symfony) 重命名app.php 或配置Web 服务器以在有人尝试直接访问app.php 时返回404,因为文件名将表明使用了Symfony。
  • (Symfony) 从非默认位置服务您的资产,因为/bundles/etc 是 Symfony 的特色。例如,在安装资产时使用 app/console assets:install path,将 path 替换为自定义位置。
  • (Symfony) 不要部署 Symfony 附带的默认公共资产,例如调试栏使用的样式表和图像。它们在生产环境中没有用处,而且因为它们的历史在 GitHub 上公开可见,它们可用于确定您正在使用的 Symfony 版本。
  • (PHP) 更改默认 cookie 名称以混淆 PHP 的使用。
  • (PHP) 禁用额外的 HTTP 标头,这些标头会泄露 PHP 的使用(例如 X-Powered-By)。这可以通过将expose_php = off 添加到 php.ini 来完成。
  • (Web 服务器)对于 PHP,禁用额外的 HTTP 标头,这些标头会宣传您的 Web 服务器的名称和版本。

您甚至可能想更进一步,不仅要隐藏应用程序的详细信息,还要将其伪装成其他东西。例如,您可以将 PHP 伪装成另一种脚本语言,希望攻击者尝试该语言的某些特定漏洞,并在几次尝试不成功后放弃。但是,你应该小心,只有当你确定没有意外的副作用时才这样做。另外,不要忘记,如果您的实际软件和您伪装成的软件存在相同的漏洞,那么您又回到了起点...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多