Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这些web应用程序需求是否现实?_C#_Asp.net_Architecture - Fatal编程技术网

C# 这些web应用程序需求是否现实?

C# 这些web应用程序需求是否现实?,c#,asp.net,architecture,C#,Asp.net,Architecture,我们的客户想要一个具有用户管理和不同角色的ASP.NET web应用程序,但有一些非常奇怪的情况: 应用程序应该在浏览器中工作,用户应该能够根据他们给定的权限登录和执行操作。(到目前为止很容易) 典型的情况是,许多具有不同用户权限的人在同一台机器、同一个windows帐户和同一个浏览器上工作。(反过来)他们仍然不能访问其他用户看到的数据,也不能在他们的帐户之外做任何事情 对我来说,这可能意味着: 我不能使用任何类型的缓存 我不能用任何类型的饼干 我不能做任何重要的事情来获取参数 我必须非常

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

  • 应用程序应该在浏览器中工作,用户应该能够根据他们给定的权限登录和执行操作。(到目前为止很容易)
  • 典型的情况是,许多具有不同用户权限的人在同一台机器、同一个windows帐户和同一个浏览器上工作。(反过来)他们仍然不能访问其他用户看到的数据,也不能在他们的帐户之外做任何事情
对我来说,这可能意味着:

  • 我不能使用任何类型的缓存
  • 我不能用任何类型的饼干
  • 我不能做任何重要的事情来获取参数
  • 我必须非常谨慎地对待会议
但我仍然不知道如何(肯定地)防止浏览器端缓存。我们试图解释,这种东西就是windows帐户的用途,但他似乎非常一致,他想把所有东西都放在一个帐户上

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


这在我以前开发的应用程序中从来都不是问题,所以我不确定如何处理这个问题。

只要使用会话(ASP.Net默认提供),就可以了。只需确保用户注销或强制执行合理短的自动注销即可

这些web应用程序需求是否现实

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

其他几点

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

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

我不能用任何类型的饼干

除了会话cookies,没有

我不能做任何重要的事情来获取参数

是的

我必须非常谨慎地对待会议


这可能总是一个好主意。

是的,这些要求非常现实。事实上,对于每个ASP.NET应用程序,您都应该将它们考虑在内。
您需要确保您有适当的会话和cookie管理、会话缓存,并在应用程序中使用成员资格和角色提供程序(自定义或内置)。

当然,以前登录过的用户需要注销,或者您可以强制注销。

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

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


您可能需要向您的业务用户解释这一点,以便他们理解这一点,因为除非您这样做,否则他们可能会试图将未能注销归咎于您。许多终端用户不知道这些东西是如何工作的,通常由我们用非技术性(或至少是可以理解的)术语向他们解释技术的局限性。

这些要求与多人从网吧登录gmail有什么不同?只要确保用户注销并使用HTTPS,他们可能不会。https是否足以阻止可能的浏览器端缓存?@atticae-https将导致在会话结束时丢弃所有浏览器数据,而不管缓存设置如何。但是,您仍然需要结束会话,这意味着您的用户必须小心始终注销。而且您不应该在GET上更改数据,因为浏览器假定所有GET请求都是可重复的。如果您正在更改表单中的数据发布或使用Javascript,我还想根据这些要求补充一点,即当执行注销时,需要放弃会话,否则会话劫持是可能的。