gpt4 book ai didi

asp.net - 是否有另一种方法来进行已经构建和审核的 ASP.Net 表单例份验证?

转载 作者:行者123 更新时间:2023-11-30 23:58:53 25 4
gpt4 key购买 nike

像很多人一样,我使用 ASP.Net Forms 身份验证,因为它已经编写好了,而且我们被告知编写我们自己的安全代码通常是个坏主意。

鉴于当前 ASP.Net 的问题,我认为现在可能是寻找替代方案的好时机。

  • Important: ASP.NET Security Vulnerability - ScottGu
  • Video demonstrating attack
  • Microsoft advisory including workaround

  • 据我了解,微软倾向于将东西存储在客户端,因为它可以更轻松地在服务器场上进行操作,而无需调用数据库访问。

    不过,我并不真正关心服务器场,我只想拥有一个不透明的 cookie,以证明我对调用者缺乏信任。

    是否有一个已经被证明可靠的体面的解决方案?

    更新:澄清我的问题。我说的是我想替换的表单例份验证的身份验证 token 部分。后端很容易替换,你可以很容易地实现接口(interface)来存储你的用户和角色。您还可以使用现有的库,如 http://www.memberprotect.net/这里已经提到过。

    我想更改流程的前端部分以使用不为客户提供任何杠杆作用的 token 。坚持现有的后端基础设施将是有用的,但不是必需的。

    最佳答案

    我一直在研究一个 HttpModule,它基本上可以满足您的需求。当 FormsAuthenticationCookie 和 FormsAuthenticatedTicket 生成时,在响应发送到客户端之前(即,在登录页面/操作的回发处理期间),有关 cookie 和票证的所有详细信息都存储在服务器上。此外,票证中的 UserData 被移动到服务器(如果存在)并替换为票证中其他属性的加盐 SHA-512 哈希以及用作票证服务器端存储的 key 的 GUID .

    cookie 和票证的验证将客户端提供的所有内容(可选地包括其 IP 地址)与发布时已知的所有属性进行比较。如果有任何不匹配的内容,它们会在 FormsAuthenticationModule 启动之前从请求中删除。如果所有内容都匹配,则服务器的 UserData 会被卡在 FormsAuthTicket 中,以防您有任何依赖它的模块或代码。这一切都是透明的。此外,它可以检测可疑和公然恶意的请求,并在处理过程中插入随机延迟。它也有一些明确的填充 oracle 变通方法。

    演示应用程序实际上允许您在服务器上创建/修改您的 cookie 和票证值,服务器使用机器 key 为您加密票证。这样,您可以向自己证明,除非您将确切的数据集写入服务器(在正常情况下这应该是不可能的),否则您无法创建绕过服务器验证的票证/cookie。

  • http://sws.codeplex.com/
  • http://www.sholo.net/post/2010/09/21/Padding-Oracle-vs-Forms-Authentication.aspx
  • http://www.sholo.net/post/2010/09/22/Sholo-Web-Security-and-the-EnhancedSecurityModule.aspx

  • -斯科特

    关于asp.net - 是否有另一种方法来进行已经构建和审核的 ASP.Net 表单例份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3751047/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com