【问题标题】:Are these web application requirements even realistic?这些 Web 应用程序要求是否现实?
【发布时间】:2012-01-24 20:40:47
【问题描述】:

我们的客户想要一个具有用户管理和不同角色的 ASP.NET Web 应用程序,但有一些非常奇怪的条件:

  • 应用程序应该在浏览器中运行,用户应该能够根据他们给定的权限登录和做事。 (到目前为止很容易)
  • 典型的情况是许多具有不同用户权限的人在同一台机器、相同的 Windows 帐户和相同的浏览器上工作。 (依次)他们仍然不能访问其他用户看到的数据或从他们的帐户中做任何事情。

对我来说,这可能意味着:

  • 我不能使用任何类型的缓存。
  • 我不能使用任何类型的 cookie。
  • 我不能对 GET 参数做任何重要的事情。
  • 我必须非常小心会话。

我仍然不知道如何(肯定地)阻止浏览器端缓存。我们试图解释这种东西是 windows 帐户的用途,但他似乎非常一致地认为他想把所有东西都放在一个帐户上。

这是一个现实的要求吗?在实现具有此类安全要求的应用程序时我必须记住什么?

这在我之前开发的应用程序中从来没有出现过问题,所以我不确定如何处理。

【问题讨论】:

  • 多人从网吧登录gmail的要求有什么不同?只需确保用户退出并使用 HTTPS。
  • 他们可能不是。 https 是否足以防止可能的浏览器端缓存?
  • @atticae - 无论缓存设置如何,HTTPS 都会导致会话结束时丢弃所有浏览器数据。但是,您仍然需要结束会话,这意味着您的用户必须小心始终注销。
  • 而且您永远不应该通过 GET 更改数据,因为浏览器假定所有 GET 请求都是可重复的。如果您要从表单更改数据 POST 或使用 Javascript。

标签: c# asp.net architecture


【解决方案1】:

只要您使用会话(ASP.Net 默认提供)就可以了。只需确保用户退出或强制执行相当短的自动退出。

【讨论】:

    【解决方案2】:

    这些 Web 应用程序要求是否现实?

    是的。网上银行应用程序通常通过在一段时间不活动后放弃它们的会话来做到这一点。此外,如果您关闭浏览器,则应放弃会话。手动注销是个好主意。

    其他几点

    我不能使用任何类型的缓存。

    不是在网络浏览器上没有,但会话缓存很好。

    我不能使用任何类型的 cookie。

    除了会话 cookie 没有

    我不能对 GET 参数做任何重要的事情。

    是的

    我必须非常小心会话。

    这可能总是一个好主意。

    【讨论】:

    • 我还想根据这些要求补充一点,当执行注销时,需要放弃会话,否则会话劫持是可能的。
    【解决方案3】:

    是的,这些要求非常现实。事实上,您应该为每个 ASP.NET 应用程序考虑它们。
    您需要确保您有适当的会话和 cookie 管理、会话缓存以及在您的应用程序中使用成员资格和角色提供程序(自定义或内置)。
    当然之前登录的用户需要注销,也可以强制注销。

    【讨论】:

      【解决方案4】:

      只要您不打算使用 Windows 集成身份验证,那么要求就不会那么糟糕。如果您使用的是 Windows 身份验证,那么不,如果不增加可用性问题,您实际上无法满足要求 #2。

      但是,即使您使用表单身份验证,您也需要确保用户在完成后退出您的网站(或关闭所有浏览器窗口)。未能注销可以(并且可能会)让下一个人简单地继续浏览并查看前一个人保存的所有数据。

      您可能需要向您的业务用户解释这一点,以便他们理解,因为除非您这样做,否则他们可能会因为未能退出而试图责备您。许多最终用户不知道这些东西是如何工作的,通常由我们以非技术(或至少可以理解)的方式向他们解释技术的局限性是什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-14
        • 1970-01-01
        相关资源
        最近更新 更多