提问人:Joe 提问时间:10/31/2023 更新时间:10/31/2023 访问量:60
我的 IIS web-config 文件在尝试实现自定义错误处理和删除基本漏洞时出现 500 错误
My IIS web-config file gives 500 error while trying to implement custom error handling and removing basic vulnerabilities
问:
我正在尝试在我的 Web 服务中实现自定义错误页面处理,同时删除主机标头注入漏洞并避免泄露有关我的 Web 服务器的信息。对于上下文,我的应用程序结构如下所示:
- 索引:.html
- 服务1/页面/*.html
- 服务2/页面/*.html
- service3/pages/*.html,
其中 service1、service2、service3 是三个独立的目录。
我当前显示的 Web 配置文件工作没有任何问题:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" />
<error statusCode="404" path="error.html" responseMode="File" />
</httpErrors>
<rewrite>
<rules>
<rule name="HTTPS Redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
但是,当我尝试将其更改为以下配置时,它会抛出内部服务器错误并停止工作。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<httpRuntime enableVersionHeader="false" />
<httpCookies httpOnlyCookies="true" />
<httpRuntime enableHeaderChecking="true" />
</system.web>
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="500" />
<error statusCode="500" path="error.html" responseMode="File" />
<remove statusCode="404" />
<error statusCode="404" path="error.html" responseMode="File" />
<remove statusCode="400" />
<error statusCode="400" path="error.html" responseMode="File" />
</httpErrors>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
<remove name="Server" />
<add name="X-Content-Type-Options" value="nosniff" />
<add name="X-Frame-Options" value="SAMEORIGIN" />
<add name="X-XSS-Protection" value="1; mode=block" />
<add name="Content-Security-Policy" value="default-src 'self';" />
</customHeaders>
</httpProtocol>
<rewrite>
<rules>
<rule name="HTTPS Redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
我知道问题出在system.web和httpProtocol标签的某个地方。但是,我无法识别它。删除这两个标签可以使其在一定程度上工作,即自定义错误页面有效,但前提是我尝试访问根路径中不存在的页面,例如 https://mwww.mydomain.com/non_existent_page.html。如果我尝试访问子文件夹中不存在的页面,例如 https://mwww.mydomain.com/service1/pages/non_existent_page.html,它不会加载 css 和 js 文件以及超链接。
我可以使用一些帮助来识别问题。
答: 暂无答案
评论
system.web
applicationHost.config
web.config