c# - ASP.NET 安全身份验证和授权的最佳实践

标签 c# asp.net security

对于 ASP.NET 站点来说,实现不基于 Windows AD 并将帐户信息存储在数据库中的安全身份验证和授权的最佳实践是什么?是使用内置的表单例份验证、库存或自定义滚动的 MembershipProvider、企业库安全 block 吗?

它们之间是否有优缺点,例如替换表单例份验证会使保护包含非 ASP.NET 文件需要限制的文件的目录变得更加困难或不可能?

最佳答案

哎呀,这是一个很大的话题,所以我将列出一些一般性的要点。

表单例份验证为您提供了一个与 session cookie 分开的身份验证 cookie,该 cookie 可以防止篡改并且可以加密。它的提供程序模型意味着即使您推出自己的成员(member)提供程序,这种保护仍然存在,并且这些提供程序可用于保护 WCF Web 服务,并允许使用 silverlight 进行身份验证和授权

Forms auth 还在执行线程上创建一个 IIdentity/IPrincipal 对象,这意味着您可以使用 CAS PrimaryPermission 要求来保护可以与 ASP.NET 应用程序分离的方法、类甚至程序集,从而使授权成为交叉关注点应该是。

表单例份验证也被 IIS7 的文件保护机制使用,因此可以与 IIS7 一起使用来保护任何类型的文件,而不仅仅是那些与 ASP.NET ISAPI DLL 关联的文件(您可以在 IIS6 中执行狂野的操作)卡片映射并将所有内容都通过 ASP.NET 管道,但这会影响可扩展性)

表单例份验证不允许假冒。

自行推出可以消除所有这些。您可以开始使用 HTTP 模块重新构建它,该模块将执行您自己的 cookie 加载和验证、在线程上创建主体并检查对资源的访问。您仍然需要编写数据库位、控件(如果需要)、您自己的类并插入它们。

你需要把它做好。

标准方法有很多优点,而且它已经被很多人锤炼、测试、使用和滥用,自行推出的最大缺点是你可能没有你那么聪明我认为你是 - 我知道我不会这样做。

关于c# - ASP.NET 安全身份验证和授权的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1410652/

相关文章:

android - oData 服务中的安全性(身份验证)

c# - 当显示新图像时,Windows Media Player COM 组件是否会触发事件?

c# - 上传到托管服务器后 Entity Framework 连接错误

security - 将旧密码转移到新的哈希算法?

jquery - Ajax 调用状态无法加载资源。简单的 ASP.NET 联系人类

html - 带有和不带有 runat=server 属性的脚本标签有什么区别

android - 将蓝牙设备安全连接到 Android

c# - 我可以在提交到商店之前测试真正的应用程序内购买吗?

c# - ISO 语法是否遵循特定格式

C# LINQ 自动生成数字或索引