C# ASP.NET MVC是否适用于高度安全的面向公众的站点?

C# ASP.NET MVC是否适用于高度安全的面向公众的站点?,c#,asp.net-mvc,security,C#,Asp.net Mvc,Security,我正在考虑在当前项目中使用ASP.NET MVC,但我对安全性有一些顾虑 该网站通过HTTPS面向公众,要求非常安全。我应该避免使用ASP.NET MVC有什么正当的理由吗?如果我走这条路,有什么需要注意的吗?ASP.NET MVC完全可以在面向公众的网站上使用。您只需要遵循标准的安全原则,但平台中的任何内容都不会阻止这一点。首先,Microsoft将使用其从一开始就包含安全性的技术开发ASP.net MVC框架。其次,它已经在一些流行网站上使用: Live.com/Hotmail 上面的

我正在考虑在当前项目中使用ASP.NET MVC,但我对安全性有一些顾虑


该网站通过HTTPS面向公众,要求非常安全。我应该避免使用ASP.NET MVC有什么正当的理由吗?如果我走这条路,有什么需要注意的吗?

ASP.NET MVC完全可以在面向公众的网站上使用。您只需要遵循标准的安全原则,但平台中的任何内容都不会阻止这一点。

首先,Microsoft将使用其从一开始就包含安全性的技术开发ASP.net MVC框架。其次,它已经在一些流行网站上使用:

Live.com/Hotmail
上面的文档描述了Microsoft在其网站上使用ASP.net MVC的经验。它还详细介绍了一些安全最佳实践指南

栈溢出 该系列网站还运行ASP.net MVC,并获得大量流量。在播客中,有相当多的人提到了试图以各种方式颠覆网站的SO用户。这就导致了新技术的引入

ASP.net与ASP.net MVC
  • -Phil Haack将ASP.net与ASP.net MVC进行比较
总结
所以,如果您遵循最佳实践,使用它应该是完全安全的。

最近我不得不努力解决这个问题。我得出的结论是,除了在普通视图上显示数据库ID这一“讨厌”因素外,我相信ASP.NET/MVC应用程序没有理由不安全

我已经读到,在asp.net Web表单中“烘焙”的某些安全功能,在执行MVC应用程序时,您必须手动添加这些功能。我最近问了一个类似的问题,答案可能有用

我这么做有什么正当理由吗 应该避免ASP.NET MVC吗

不。如果您遵循基本的安全实践

有什么我需要知道的吗 如果我走这条路会怎么样

您应该注意的重要事项之一是自动数据绑定
如果你不看,这可能非常危险


更多信息I.

与任何新技术一样,您需要花一些时间学习MVC,以了解如何安全地使用它。由于它比ASP.NET web表单更为简单,如果不小心,您确实有更多机会攻击自己

例如:

  • 使用WebForms,您通常不会担心跨站点请求伪造攻击,因为缓解措施是为您处理的(通过隐藏的viewstate数据)。使用ASP.NET MVC,您需要通过在表单中嵌入安全令牌并在控制器中验证来自行处理此问题。。。该框架提供了帮助程序(Html.AntiForgeryToken函数),但您仍然需要知道何时使用它

  • MVC的自动模型绑定功能非常有用,但是您需要了解绑定是如何工作的,以防止潜在的恶意数据进入控制器。同样,MVC提供了缓解选项(显式绑定),但您仍然需要知道何时以及如何使用它

这些只是MVC特有的工具和技术,每个框架都有自己的一套工具和技术


就安全性而言,我认为您使用的框架远不如全面了解一般的安全问题以及您自己的应用程序的威胁模型重要。

是什么让您觉得Asp.net MVC比,Webforms或Ruby On Rails?您有什么特别的顾虑吗?有两个原因:老实说,主要原因是我更熟悉Webforms中的安全性和页面生命周期,并且我知道我需要寻找什么。第二,我还没有看到一个ASP.NET MVC应用程序是高度安全的,甚至在https之后。所以我的问题是,更具体地说,你认为会出什么问题?安全性的工作方式与WebForms中的工作方式大致相同,但您使用Asp.Net MVC中的自定义授权属性进行更多的声明性控制,我发现这比常用的WebForms习惯用法更不容易出错。很难猜测您的应用程序会出现什么问题,特别是,不知道你的应用程序的安全性有什么困难。这是一个很好的观点。可能这是ASP.NETMVC中唯一需要特别关注的东西。但它很容易控制,而且主要是因为它甚至有可能。。。WebForms中没有完全相同的功能,除了与ObjectDataSource相对不灵活的双向对象绑定。@JasonTrue,是的,它确实需要一定程度的关注。不过,如果你只是使用DTO,那也没什么大不了的。但我仍然发现自动装订到处被滥用;大多数在线示例直接绑定到持久对象。所以我一直在关注这件事。