rou*_*uen 14 asp.net asp.net-mvc web-config iis-7.5
我刚读了一篇有趣的文章.基本上它说,你应该通过两种方式为每个应用程序微调IIS设置:
好吧,我现在开发ASP.NET已经有一段时间了,即使是在工作中,我们也从来没有在生产环境中做过这件事.我理解所提出的理论优势 - 最小化应用程序(安全性)的"表面",并提高性能.但我真的很好奇,如果你在现实生活中这样做(为你的客户提供真正的项目,而不是概念验证项目).这有什么缺点(可能性?).最重要的问题 - 值得吗?例如,性能增益是否可见?
另外,如果你认为这是一个很好的做法,请提出一些好的和一致的方法(或指向我的教程),你是如何做到这一过程的 - 你如何决定留下什么以及要删除什么.
例如,什么是ASP.NET MVC 3应用程序的最小但工作集,它使用自定义身份验证(基于会话,不依赖于Forms身份验证,Windows身份验证等),没有Web服务和类似功能?
编辑
我找到了这篇文章:http://madskristensen.net/post/Remove-default-HTTP-modules-in-ASPNET.aspx
在其中,Scott Guthrie说:
一般来说,使用这种方法可以获得一些非常小的性能胜利 - 尽管我可能建议不要这样做.原因是ASP.NET的某些功能(表单身份验证,角色,缓存等)当然会在您删除它们所依赖的模块后停止工作.试图找出发生这种情况的原因往往令人困惑.
但仍然没有测量,实践(我不相信"你以后可能会感到惊讶"的论点:)
<modules runAllManagedModulesForAllRequests="false">
<!-- disable authorization section -->
<remove name="UrlAuthorization" />
<!-- disable unused authentication schemes -->
<remove name="WindowsAuthentication" />
<remove name="PassportAuthentication" />
<!-- disable ACL file and directory check -->
<!-- <remove name="FileAuthorization" /> -->
<!-- We don't use ASP.NET Profiles -->
<remove name="Profile" />
<!-- We don't provide any WCF service -->
<remove name="ServiceModel" />
<!-- Remove modules not used by ASP.NET MVC + jQuery -->
<remove name="ScriptModule-4.0" />
</modules>
Run Code Online (Sandbox Code Playgroud)
不管怎样,IIS 8 的安全最佳实践是这样的:
\n\n\n\n\n\n
\n- \n
仅安装您需要的 IIS 模块。
\n\nIIS 8 由 40 多个模块组成,允许您添加所需的模块并删除您不需要的任何模块。如果仅安装所需的模块,则可以减少遭受潜在攻击的表面积。
- \n
定期删除未使用或不需要的模块和处理程序。
\n\n查找不再使用的模块和处理程序并将其从 IIS 安装中删除。努力使 IIS 表面积尽可能小。
IIS 模块概述还包含 IIS 模块参考,其中包含每个模块的“删除此模块时的潜在问题”部分。例如,如果删除 DefaultAuthentication 模块:
\n\n\n\n如果 ASP.NET 身份验证模式为表单,某些 ASP.NET 功能可能不适用于匿名请求。\n此外,也不会引发 DefaultAuthentication.OnAuthenticate 事件。
\n
| 归档时间: |
|
| 查看次数: |
1902 次 |
| 最近记录: |