我正在考虑将ASP.NET MVC用于当前项目,但我对安全性有一些顾虑。
该网站通过HTTPS面向公众,并且要求非常安全。有什么合理的理由我应该避免使用ASP.NET MVC吗?如果我走这条路,有什么需要注意的吗?
答案 0 :(得分:8)
首先,微软将使用他们的SDL processes开发ASP.net MVC框架,其中包括安全性。其次,它已经在一些热门网站中使用:
以上是描述Microsoft在其live.com网站上使用ASP.net MVC的体验的文档。它还详细介绍了一些安全最佳实践指南。
stackoverflow系列网站也运行ASP.net MVC并获得大量流量。在播客中,向SO用户提出了相当多的提及,他们试图以各种方式破坏网站。它导致引入hacker badge。
因此,如果您遵循最佳实践,那么使用它应该是完全安全的。
答案 1 :(得分:5)
ASP.NET MVC完全可以在面向公众的网站上使用。您只需要遵循标准安全主体,但平台中的任何内容都不会阻止这种情况。
答案 2 :(得分:2)
我有什么合理的理由吗? 应该避免使用ASP.NET MVC吗?
没有。如果您遵循基本的安全实践。
我需要注意什么吗? 如果我走这条路?
您应该注意的一个重要事项是自动数据绑定 如果你不看,这可能非常危险。
更多信息我wrote in by blog here。
答案 3 :(得分:1)
我最近不得不与此搏斗。我得到的是,除了在普通视图上使用数据库ID的“icky”因素之外,我相信ASP.NET / MVC应用程序没有理由不安全。
我已经读过某些安全功能,这些功能已经“覆盖”到asp.net Web Forms中,您在进行MVC应用时必须手动添加。我最近问过类似的问题,答案可能很有用。
答案 4 :(得分:1)
与任何新技术一样,您需要花一些时间学习MVC以了解如何安全地使用它。由于它比ASP.NET网页形式更加裸机,如果你不小心,你确实有更多的机会射击自己。
例如:
使用WebForms,您通常不担心跨站点请求伪造攻击,因为缓解是为您处理的(通过隐藏的视图状态数据)。使用ASP.NET MVC,您需要通过在表单中嵌入安全令牌并在控制器中验证它来自己处理...框架提供帮助程序(Html.AntiForgeryToken函数),但您仍需要知道何时使用它。
MVC的自动模型绑定功能非常有用,但是您需要了解绑定的工作方式,以防止进入控制器的潜在恶意数据。同样,MVC提供缓解选项(显式绑定),但您仍需要知道何时以及如何使用它。
这些只是MVC特有的工具和技术,每个框架都有自己的一套。
就安全性而言,我认为您使用的框架远不如彻底了解一般安全问题以及您自己的应用程序的威胁模型那么重要。