【问题标题】:Page requires HTTP; ASP.NET authorization requires HTTPS页面需要 HTTP; ASP.NET 授权需要 HTTPS
【发布时间】:2016-05-19 02:36:49
【问题描述】:

在托管在 Azure 上的 ASP.NET 网站上,我需要保护一个页面,以便只有某些用户可以访问它。由于页面中使用了 javascript 库,它只有在通过 HTTP 提供服务时才能正常工作,但除非通过 HTTPS 提供页面,否则 ASP.NET 身份验证将不允许访问。

为了限制对安全页面的访问,我在包含该页面的文件夹中添加了一个 Web.config 文件:

 <configuration>
   <system.web>
     <authorization>
       <allow roles="Admin" />
       <allow roles="Map Viewer" />
       <deny users="*" />
     </authorization>
   </system.web>
 </configuration>

主 web.config 文件设置表单身份验证。

<authentication mode="Forms">
  <forms loginUrl="~/account/login/"
         requireSSL="true"
         timeout="2880" />
</authentication>

如果您通过 https 访问受保护的页面(例如https://example.com/Map),这就像一个魅力。系统会提示您登录,输入您的凭据,然后转到该页面。如上所述,如果通过 http 提供该页面将无法正常工作。但是,ASP.NET 身份验证/授权不允许您访问它: 1.如果您没有登录并尝试通过http访问该页面,您将在登录后被重定向到站点主页。 2. 如果您已登录并尝试通过 http 访问该页面,即使您已经登录,也会显示登录屏幕。

网站上没有其他安全页面需要 HTTP 才能正常工作,并且这种基于表单的身份验证过程多年来一直对这些页面运行良好。

【问题讨论】:

  • 为什么javascript库需要HTTP?我对此持怀疑态度,但如果这是真的,你应该解雇那个图书馆并找到一个替代品。
  • link 不通过 HTTPS 为他们的库提供服务——它回退到 HTTP。我尝试将 JS 库复制到我的服务器,但该库加载的地图图块也不会通过 HTTPS。
  • 对我来说,放弃 CartoDB 就足够了,因为他们似乎并不重视安全
  • 我对其他有此问题的用户的建议是考虑使用 ASP.NET MVC,它允许用户更轻松地从 HTTPS 迁移到 HTTP。请注意,这具有安全隐患!如果恶意用户能够窃听连接,他们可能会通过窃取您的 cookie 值来劫持您的会话。

标签: asp.net


【解决方案1】:

requireSSL 属性设置为false,或将其删除(如果未指定值,requireSSL 为假)。如果 requireSSL 设置为 true,则服务器不会接受身份验证 cookie,除非它们通过 HTTPS 连接发送到服务器。删除此属性后,服务器将接受来自 HTTP 和 HTTPS 的身份验证 cookie。

【讨论】:

  • requireSSL 设置为 false 具有安全隐患,因为如果通过 HTTP 连接传输身份验证 cookie,则可能会被盗。
猜你喜欢
  • 2011-09-26
  • 1970-01-01
  • 2015-10-29
  • 2016-09-04
  • 2020-06-26
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多