使用/bundles/路径的资产是否存在安全风险?

3

我在Twig模板中使用/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框架并利用一些漏洞,或者用户可能会知道我的bundle名称,而不知道这可能会导致什么问题,或者用户可能能够热链接文件,我知道可以通过服务器设置来解决,但是在混淆和安全方面,这样做是否存在问题?
请注意,我正在开发一个基于此框架的企业网站,并且受到保密协议等限制,这不像是一个开源的bundle之类的东西。

1
有可能会让用户知道我正在使用Symfony框架,并利用其中的漏洞。没错,这种情况是存在的。 - zerkms
请记住,只有您的资产文件可以通过“web”文件夹(通过“assetic:dump”复制/链接)访问。PHP脚本和配置文件不可用。 - Phil
1个回答

7

好问题。

从理论上讲,不应该会有问题。Symfony应该足够安全,以至于即使知道您正在使用Symfony甚至精确的版本,黑客仍无法伤害您的应用程序(假设您已正确配置所有内容,包括Web服务器等)。

然而,在现实中,您的代码或某些供应商的代码中始终存在漏洞的可能性。因此,您确实希望减少潜在攻击者的攻击难度,通过隐藏您正在使用的框架,即使在应用程序存在漏洞的情况下,攻击者也不会知道您正在使用该特定框架,除非尝试所有可能性。

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

  • (Symfony) 一些显而易见的步骤,例如替换默认的Symfony favicon,在生产环境中不部署 app_dev.php config.php ,并创建自定义错误页面。
  • (Symfony) 重命名 app.php 或将Web服务器配置为在直接访问 app.php 时返回404,因为文件名将表明使用Symfony。
  • (Symfony) 从非默认位置提供您的资源,因为/bundles/etc 相当特别。例如,在安装资产时使用 app/console assets:install path ,将路径替换为自定义位置。
  • (Symfony) 不要部署随Symfony一起提供的默认公共资产,如调试栏使用的样式表和图像。它们在生产中没有用处,因为它们的历史记录可以在GitHub上公开查看,所以可以用来确定您正在使用的Symfony版本。
  • (PHP) 更改默认cookie名称以混淆使用PHP情况。
  • (PHP) 禁用额外的HTTP头,以避免透露使用PHP的信息(例如X-Powered-By)。可以通过添加expose_php = off到php.ini来实现。
  • (Web服务器) 关于PHP,禁用广告您的Web服务器名称和版本的额外HTTP头。
您甚至可能希望更进一步,不仅隐藏应用程序的详细信息,而是将其伪装成其他东西。例如,您可以将PHP伪装成另一种脚本语言,希望攻击者尝试该语言的某些特定漏洞,并在几次失败的尝试后放弃。然而,请注意,只有在确定没有意外副作用时才能这样做。此外,请不要忘记,如果您实际使用的软件和您伪装的软件都存在相同的漏洞,则会回到起点...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接