我在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">
是否有任何安全风险,用户可能会知道我使用symfony fw,并利用某些东西,或者用户可能知道我的包名称,谁知道这可能导致什么,或者用户可能能够我知道的热链接文件可以通过服务器设置进行更正,但是这样做是否存在任何问题,就混淆和安全性而言?
请注意,我正在开发一个基于这个fw的企业站点,并且我必须不披露等等,它不像它的开源包或任何东西.
解决方法:
好问题.
从理论上讲,它不应该. Symfony应该足够安全,以便在知道您使用Symfony和/或甚至是您运行的确切版本时,黑客仍然无法损害您的应用程序. (假设您已正确配置所有内容,包括您的Web服务器等)
但是,实际上,您的代码或某些供应商的代码中仍可能存在漏洞.您可能确实希望通过隐藏您正在使用的框架使潜在攻击者更容易一点,这样即使您的应用程序中存在漏洞,攻击者也不会知道您正在使用该特定漏洞框架没有首先尝试所有可能性.
关于这个主题的一篇有趣的文章是Hide your Web stack.它基本上提供了以下技巧,不仅可以混淆使用Symfony,还可以混淆PHP和Apache(或者你正在使用的任何网络服务器):
>(Symfony)一些明显的步骤,例如替换默认的Symfony favicon,不在生产中部署app_dev.php和config.php,以及创建自定义错误页面.
>(Symfony)重命名app.php或将Web服务器配置为在有人试图直接访问app.php时返回404,因为该文件的名称将表示使用Symfony.
>(Symfony)从非默认位置提供资产,因为/ bundles / etc对于Symfony来说非常有特色.例如,使用app / console资产:安装资产时的安装路径,用自定义位置替换路径.
>(Symfony)不要部署Symfony附带的默认公共资源,例如调试栏使用的样式表和图像.它们在生产中没有用,因为它们的历史在GitHub公开可见,它们可用于确定您正在使用的Symfony的版本.
>(PHP)更改默认cookie名称以混淆使用PHP.
>(PHP)禁用额外的HTTP标头,这些标头放弃了PHP的使用(例如X-Powered-By).这可以通过将expose_php = off添加到php.ini来完成.
>(Web服务器)对于PHP,禁用额外的HTTP标头,用于通告Web服务器的名称和版本.
您甚至可能希望更进一步,不仅隐藏应用程序的详细信息,而是将其伪装成其他内容.例如,您可以将PHP伪装成另一种脚本语言,希望攻击者可以尝试使用该语言的某些特定漏洞,并在尝试几次失败后放弃.但是,你应该小心,只有在你确定没有意外的副作用时才这样做.此外,不要忘记,如果您的实际软件和软件伪装成相同的漏洞,那么您就回到了开始的地方……