2009-08-24 53 views
5

我有一个使用标准SQL成员资格提供程序的ASP.NET 3.5网站。ASP.NET为什么接受外部创建的会话标识符?

应用程序必须先通过IBM Rational AppScan,然后才能生产。

我收到错误:
严重性:高
测试类型:应用
弱势网址:http://mytestserver/myapp/login.aspx
整治任务:不接受外部创建的会话标识符

我能做些什么解决这个问题?

我正在使用SQL成员资格提供程序。这是相关的吗?我也使用标准登录控件。我已将“记住我”关闭并隐藏起来。

谢谢。

+0

我想不出任何理由,为什么这本来就是坏的?不改变他们检查它的事实,但我想知道*为什么*。 – Thorarin 2009-08-24 17:26:48

回答

8

这不是一个漏洞(我真的不喜欢AppScan,因为它的假阳性es - 我必须解释CSRF cookies的次数不需要与我的小型开源项目中的会话相关联,这让人很烦恼)。

在这种情况下发生的所有事情都是第一次以会话状态存储任何事物并创建一个会话标识符,新的会话将在服务器上打开,其中没有任何内容。如果你担心会话固定,那么你可以在认证后清除cookie。

Session.Abandon(); 
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", "")); 

但是使用表单身份验证,会话中没有保存身份验证细节,因此修复不是问题。

坦率地说,如果你必须通过安全扫描没有任何人评估,如果结果不是误报,那么这是一个完全不同的问题。

+0

谢谢。不过,我尝试了这一点,但IBM Rational AppScan报告了相同的安全错误。 – 2009-09-03 13:29:41

+0

虽然这不是一个漏洞,你的解释是错误的。你已经写下并接受了一个不正确的答案。 – blowdart 2009-09-03 15:33:30

+0

我同意你的意见,但只是说这还不够。我也不喜欢AppScan工具,但那是我生活的世界。我在每个项目上浪费了一天左右的时间。在他们改变政策之前,我必须忍受它。 – 2009-09-09 13:23:55

0

看起来好像是RegenerateExpiredSessionId属性正在控制这个。 将其设置为true。同时保持超时和低值,用户可以接受的最严格(例如10 - 15分钟)。

+1

谢谢。我试过了,但IBM Rational AppScan每隔几秒就会触发一次该网站。将值降低到10分钟不起作用。 – 2009-09-03 13:31:27