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

bla*_*amb 3 php security assets symfony twig

我在我的树枝模板中使用/ bundles/path作为图像,例如

<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">
Run Code Online (Sandbox Code Playgroud)

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

请注意,我正在开发一个基于这个fw的企业站点,并且我必须不披露等等,它不像它的开源包或任何东西.

Nic*_*tel 7

好问题.

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

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

有关此主题的有趣文章是隐藏您的Web堆栈.它基本上提供了以下技巧,不仅可以混淆使用Symfony,还可以混淆PHP和Apache(或者您正在使用的任何Web服务器):

  • (Symfony)一些明显的步骤,例如替换默认的Symfony favicon,而不是部署app_dev.phpconfig.php生产,以及创建自定义错误页面.
  • (Symfony)app.php如果有人试图app.php直接访问,则重命名或配置Web服务器以返回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伪装成另一种脚本语言,希望攻击者能够尝试使用该语言的某些特定漏洞,并在尝试几次失败后放弃.但是,你应该小心,只有在你确定没有意外的副作用时才这样做.此外,不要忘记,如果您的实际软件和软件伪装成相同的漏洞,那么您就会回到原点...