使用/ bundles / path资产是否会暴露任何安全风险?

时间:2014-04-30 01:55:31

标签: php security symfony twig assets

我在twig模板中使用/ bundles / path作为图像, e.g。

<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的企业站点,并且我必须不披露等等,它不像它的开源包或任何东西。

1 个答案:

答案 0 :(得分:7)

好问题。

理论上讲,它不应该。 Symfony 应该足够安全,以便知道您使用Symfony和/或甚至是您正在运行的确切版本,黑客仍然无法伤害您的应用。 (假设您已正确配置了所有内容,包括您的Web服务器等。)

但实际上,您的代码或某些供应商代码中仍可能存在漏洞。您可能确实希望通过隐藏您正在使用的框架来使潜在攻击者更容易一点,这样即使您的应用程序中存在漏洞,攻击者也不会知道您&# 39;重新使用该特定框架而不首先尝试所有可能性。

有关此主题的有趣文章是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伪装成另一种脚本语言,希望攻击者可以尝试使用该语言的某些特定漏洞,并在尝试几次失败后放弃。但是,你应该小心,只有当你确定没有意外的副作用时才这样做。另外,请不要忘记,如果您的实际软件和您将其伪装成遭受相同漏洞的软件,那么您就会回到原来的位置......