【问题标题】:ASP.NET Forms Authentication via Querystring通过查询字符串进行 ASP.NET 表单身份验证
【发布时间】:2009-07-22 17:13:48
【问题描述】:

我目前有一个在 IIS 7 上运行的 ASP.NET 3.5 SP1。我已经使用 .NET Membership 启用了表单身份验证,并设置了一些根据我创建的角色受到限制的文件夹。例如,如果匿名访问者试图访问文件http://www.example.com/restricted/foo.txt,他/她将被重定向到登录页面,正如预期的那样。到目前为止一切顺利。

我想做的是通过允许访问者在查询字符串中指定他们的登录凭据来提供对受保护文件的访问权限,仅以下几行:

http://www.example.com/foo.txt?user=username&pass=pwd

这可能吗?

【问题讨论】:

    标签: asp.net query-string membership


    【解决方案1】:

    您应该能够编写一个 http 模块来拦截请求并根据查询字符串对用户进行身份验证。但是,为了完整起见,我想问一下以明文形式向用户提供用户名和(特别是)密码是否是个好主意。

    【讨论】:

    • 感谢乔尔的快速回答。我以前从未写过 http 模块,但我会沿着这条路线走,让你知道它是如何工作的!
    • 顺便说一句,我认为有人会提出安全问题 :-) 我并不打算与该网站的大多数用户共享此功能。目标是简单地允许我站点上的小部件访问该文件(它需要一个 URL 作为输入),并且我为此小部件指定的用户角色非常严格,因此不会暴露任何关键数据。我认为这至少可以为小部件使用的文件提供一定程度的安全性,尽管我承认它肯定不是万无一失的。
    • 我知道这是一篇旧帖子,但请允许我指出,这也可以通过使用密码 + 时间戳和例如 IP 加密用户名的 concat 来安全地完成,然后解密并解析接收端。您也可以使用不断变化的盐来进一步收紧。
    【解决方案2】:

    您可以轻松地创建一个下载页面,该页面将对用户进行身份验证,然后将其转发到请求的文件。比如导航到 Download.aspx?user=username&pass=pwd&file=foo.txt。

    但不建议这样做。您永远不应要求用户通过 URL 传递登录信息。

    【讨论】:

    • 感谢您的反馈,丹!请参阅我上面关于安全性的评论。我真正的困境是我需要传递我的小部件可以访问的 URL(传递本地路径是理想的,但由于它是第 3 方小部件,它必须是 Web url)。
    【解决方案3】:

    基于您对其他问题所做的 cmets 的次要答案是,您可以简单地将下载页面放在一个目录中。子文件夹可能有一个 web.config,允许未经身份验证的用户访问其中的内容:-)

    类似:

    <configuration>
       <system.web>
          <authorization>
             <allow users="*" />
          </authorization>
       </system.web>
    </configuration>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-29
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多