我想建立一个不能执行任何服务器端代码(asp,asp.net等)的网站。
我尝试使用具有“无托管代码”作为 .NET Framework 版本的应用程序池,但经典的 asp 代码仍然执行。
我尝试删除所有 ISAPI 过滤器,但没有帮助。
删除“.asp”处理程序映射有效。我是否应该删除所有 *.[ext] 处理程序以进一步锁定它?
我仍然需要在一些网站上运行代码,但我希望能够根据需要在网站上提供原始的网络托管。
答案1
最安全的方法是将以下内容添加到您的 web.config 中
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<location path="" allowOverride="false">
<system.webServer>
<handlers accessPolicy="Read" />
</system.webServer>
</location>
</configuration>
它与 William Jens 所做的相同。但是它<location path="" allowOverride="false">
添加了一项安全措施,以防止覆盖子目录中的 web.config 文件。
值得注意的是,您仍然需要阻止对根 web.config 文件的修改。例如,将其设为只读。
答案2
您可以选择在服务器中安装和使用 IIS 的哪些功能;如果删除所有应用程序开发功能,则 Web 服务器将不会处理任何服务器端代码。
答案3
经过一些进一步的修补后,我想我已经明白了。
IIS 管理器 > [我的网站] > 处理程序映射 > 编辑功能权限 > 取消选中“脚本”
这会禁用大多数处理程序,从而阻止经典 asp 和 asp.net 文件运行,但仍然提供 html。
不确定这是否是正确的方法,但它似乎有效。