- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道如何在 ASP.NET 中处理这个问题,但是有没有办法强制清除经典 ASP session ID?它是一个随机生成的 ID,如 ASPSESSIONIDG32423E,似乎在 RESPONSE.COOKIES 集合中不可用,因此我无法清除它。我们有一个类 ASP 站点仍然存在,最近的一项审计发现,在用户注销后,相同的 session ID 被重复使用。
更多说明:
第一次访问页面,我在 Response 的代理编辑器中看到了这个:
设置 Cookie:ASPSESSIONID=PUYQGHUMEAAJPUYL;路径=/网络应用
注销后,我调用 Session.RemoveAll 和 Session.Abandon,然后将用户重定向到登录页面。此时我应该会看到一个新的 Set-Cookie,它具有不同的 SessionID 值。相反,我没有得到新的 cookie,新的登录 session 重用了原始 session cookie。这是我们必须以某种方式解决的审计发现,但似乎没有办法控制它。
最佳答案
所以我确实想出了一个解决方案,如下所示。我添加了两个名为 Start.asp 和 Start2.asp 的页面。原始登录页面已更改为检查现在在 Start2.asp 上设置的 post 变量,因此如果 login.asp 没有看到该 post 变量,它会重定向到 Start.asp。 Start.asp 通过将其设置为 0 使 ASPSessionID 无效。关键是使用 Response.AddHeader "Set-Cookie"来执行此操作,因为 Response.Cookies("ASPSESSIONID...") 给出了您无法访问的错误元素:
<%
If instr(Request.ServerVariables("HTTP_COOKIE"), "ASPSESSIONID") > 0 Then
Dim Allcookies
AllCookies = Split(Request.ServerVariables("HTTP_COOKIE"),";")
For i = 1 to UBound(AllCookies)
If instr(AllCookies(i), "ASPSESSIONID") > 0 Then
Response.AddHeader "Set-Cookie", Left(AllCookies(i),instr(AllCookies(i),"=") -1) & "=0; path=/;secure;httponly"
End if
Next
End if
Response.Redirect("start2.asp")
%>
接下来,它调用 Start2.asp 查找所有 ASPSEssionID cookie 并附加 Secure; httponly(我不得不为另一个发现添加这些,只有当 SSL 证书在 Web 服务器上时,ASP 元数据库设置才能添加安全。在我们的例子中,SSL 证书在 Web 服务器前面的负载平衡器上)。
<%
'CODE for authorization/authentication
'...
Session.Contents.RemoveAll
Session.Abandon
If instr(Request.ServerVariables("HTTP_COOKIE"), "ASPSESSIONID") > 0 Then
Dim Allcookies
AllCookies = Split(Request.ServerVariables("HTTP_COOKIE"),";")
For i = 1 to UBound(AllCookies)
if left(Request.ServerVariables("HTTP_HOST"),2) = "65" and instr(AllCookies(i), "ASPSESSIONID") > 0 Then
Response.AddHeader "Set-Cookie", AllCookies(i) & "; path=/;secure;httponly"
End if
Next
End if
%>
<html>
<body>
<form action="login.asp" method="post">
<input type="hidden" name="start2" id="start2" value="Yes" />
</form>
<script type="text/javascript">
document.forms[0].submit();
</script>
</body>
</html>
实际上,新的 ASPSessionID 直到在 Start2.asp 中才生成,因此安全和 httponly 的 Set-Cookie 代码也必须在 login.asp 中完成。所以上面的相同代码被复制到 login.asp 的顶部,就在这段代码之后:
If request.form("Start2") = "" Then
Response.Redirect("start.asp")
End if
关于asp-classic - 经典 ASP : ASPSessionID is reused,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10691938/
function setCookie() { var path = '/', host = document.location.hostname; document.cookie =
我在使用经典的 asp 页面时遇到了问题,并且 3 天以来一直无法解决它。 该页面正在使用 session - 有时会发生 ASPSESSIONID cookie 在 Request.ServerVa
有没有办法将经典 ASP ASPSESSIONID* cookie 标记为安全?看来 ASP ISAPI 处理程序在我的页面完成呈现后添加了该 session id cookie,因此将代码放在页面末
我知道如何在 ASP.NET 中处理这个问题,但是有没有办法强制清除经典 ASP session ID?它是一个随机生成的 ID,如 ASPSESSIONIDG32423E,似乎在 RESPONSE.
我试图将 ASP session ID cookie 标记为 HttpOnly 但似乎无法找到一种方法来判断它是否正常工作。我正在尝试的环境如下: 操作系统:Windows Server 2003 I
我是一名优秀的程序员,十分优秀!