繁体   English   中英

C#4 ASP.net * NON MVC *自定义身份验证

[英]C# 4 ASP.net *NON MVC* Custom Authentication

我知道这个问题已经被问过无数次了,但是相信我我已经搜索了Google几个小时,却一无所获。 无论那里有什么,它都用于我不使用的MVC。

我的要求很简单。 我不想使用asp.net中提供的默认身份验证。 我会将用户名/密码/角色存储在自定义SQL Server表中。 我将为用户名/密码提供2个输入,并提供一个验证按钮。 验证后,他被允许访问管理区域。 这只会由我的子域“ admin。 * .com”中的管理员使用。 他们将每天使用此页面向网站添加内容。

  1. 我该如何实施。 教程链接就足够了。
  2. 生产安全吗? 我不希望一些新手黑客进入我的网站并将其弄乱。 如果不安全,我还有什么选择。

谢谢,开发人员

您可以创建自己的具有所需功能的自定义成员资格提供程序。 asp.net会员提供者

出于安全目的,最好使用久经考验的方法。 请记住,您可以自定义任何提供程序,包括角色提供程序,甚至可以创建自己的唯一提供程序。

这是一个使用ASP.NET 1.1进行LDAP身份验证的示例。 该逻辑可能仍然适用,也可以适用于更高版本的ASP.NET,尽管我尚未对其进行测试。

使用内置成员资格提供程序或实现自己的成员资格提供程序,不能保证黑客无法访问您的系统。 您必须考虑的事项:

  1. 客户端和服务器之间的数据加密
  2. 不要将密码存储在数据库中,甚至不进行加密。 如果可以的话,将每个密码散列成自己的盐。
  3. 加强强密码熵
  4. 确保会话和授权cookie标记为HttpOnly和Secure
  5. 对于管理员密码,有一项政策要经常更改(例如每月一次)
  6. 提供在有人登录其帐户时通知管理员的方法
  7. 暂时锁定每秒超过请求数量且无法通过身份验证的IP地址
  8. 当用户在y分钟(例如10分钟)内输入超过x(例如10)次密码时,暂时锁定用户。

这些只是少数要寻找的东西。 您还必须关注会话劫持,javascript攻击等。

这不是一件小事。

根据我们的评论,鉴于您不愿实施ASP.Net成员资格 提供程序 (并且值得花时间进行调查-您可能不觉得现在是正确的,但是可能会很方便。起初,我有同样的感觉,但很快就会发现维护自己的代码和基础结构的成本是不合算的),您至少还有两个选择:

1)简易表格认证

将所有管理页面都放在一个文件夹(例如/ Admin)下,然后使用“ 表单身份验证”来保护对此文件夹的访问。 只有在数据库Web.Config中定义的用户才能访问这些页面。 这没有ASP.Net成员资格灵活,但可以为您提供大部分所需的服务。 在安全性方面,这将与您的网站一样安全,经过良好测试并且有据可查。

2)使用Facebook OAuth

您提到您的使用可以访问Facebook。 您可以使用Facebook进行身份验证 尽管您将无法获取用户名和密码,但是可以找回令牌,然后可以根据已知的权限集进行验证。 但是,与1)相比,这项工作要多得多,并将使您与Facebook API未来的潜在变化联系在一起。 但是,它也将从经过良好测试和安全性中受益,但是您几乎无法控制实际用户信息。

顺便说一句,也请考虑对Google更好!

编写自定义身份验证处理程序非常危险。 有很多方法可以解决该问题,并使您的网站容易受到攻击。

我也理解您的投诉,即表单身份验证极其复杂。 我面临类似的十字路口,因此决定构建自己的身份验证系统FSCAuth 它是BSD许可的。 它的设计非常简单,几乎可以允许您使用任何数据库格式进行映像。 设置它所要做的全部工作就是在数据库中实现一个小的4功能接口,并填充一些配置字段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM