为什么ASP.NET页面中Session -object 上的属性SessionID在请求之间发生变化?
我有一个这样的页面:
...
<div>
SessionID: <%= SessionID %>
</div>
...
Run Code Online (Sandbox Code Playgroud)
每次我点击F5时输出都会不断变化,与浏览器无关.
在使用JSP和Servlets在java中实现的Web应用程序中; 如果我在用户会话中存储信息,则从同一浏览器的所有选项卡共享此信息.如何在浏览器选项卡中区分会话?在这个例子中:
<%@page language="java"%>
<%
String user = request.getParameter("user");
user = (user == null ? (String)session.getAttribute("SESSIONS_USER") : user);
session.setAttribute("SESSIONS_USER",user);
%>
<html><head></head><body>
<%=user %>
<form method="post">
User:<input name="user" value="">
<input type="submit" value="send">
</form>
</body></html>
Run Code Online (Sandbox Code Playgroud)
将此代码复制到jsp页面(testpage.jsp
)中,将此文件部署在服务器上的Web应用程序的现有上下文中(我使用Apache Tomcat),然后使用正确的URL(localhost/context1/testpage.jsp
)打开浏览器(FF,IE7或Opera ),键入您在输入中的姓名并提交表格.然后在同一浏览器中打开一个新选项卡,然后您可以在新选项卡上看到您的名称(从会话中获取).小心浏览器缓存,有时似乎不会发生,但它在缓存中,刷新第二个选项卡.
谢谢.
我正在MySQL数据库中创建一个表以保存一些会话数据,包括session_id
.VARCHAR
存储session_id
字符串的长度应该是多少?
由于对我们的一些产品进行了渗透测试,当时看起来很容易解决的"容易"问题变得非常棘手.
当然不应该这样,我的意思是,为什么只为当前HTTPContext
这个难以产生一个全新的会话?离奇!无论如何 - 我写了一个厚脸皮的小实用工具类来"做它":
(代码格式化/突出显示/ Visual Basic道歉我必须做错事)
Imports System.Web
Imports System.Web.SessionState
Public Class SwitchSession
Public Shared Sub SetNewSession(ByVal context As HttpContext)
' This value will hold the ID managers action to creating a response cookie
Dim cookieAdded As Boolean
' We use the current session state as a template
Dim state As HttpSessionState = context.Session
' We use the default ID manager to generate a new session id
Dim idManager As New SessionIDManager() …
Run Code Online (Sandbox Code Playgroud) 我知道这个话题已经讨论了很多,但我还有一些具体的问题仍未得到解答.例如:
// **PREVENTING SESSION HIJACKING**
// Prevents javascript XSS attacks aimed to steal the session ID
ini_set('session.cookie_httponly', 1);
// Adds entropy into the randomization of the session ID, as PHP's random number
// generator has some known flaws
ini_set('session.entropy_file', '/dev/urandom');
// Uses a strong hash
ini_set('session.hash_function', 'whirlpool');
Run Code Online (Sandbox Code Playgroud)
// **PREVENTING SESSION FIXATION**
// Session ID cannot be passed through URLs
ini_set('session.use_only_cookies', 1);
// Uses a secure connection (HTTPS) if possible
ini_set('session.cookie_secure', 1);
Run Code Online (Sandbox Code Playgroud)
session_start();
// If the user is already …
Run Code Online (Sandbox Code Playgroud) 我见过有人使用UUID进行身份验证令牌生成.但是,在RFC 4122中说明了这一点
不要以为UUID难以猜测; 例如,它们不应被用作安全功能(仅仅拥有访问权限的标识符).
我想知道,在Java和.NET中使用什么算法用于SessionId/AuthenticationToken生成.在具有超过平均安全需求的应用程序中,UUID确实不适合用于这些目的吗?
是否可以使用ASP.NET为会话生成新ID?
当我在设置初始会话变量之前登录我的网站时,我希望它能够改变.
在C#中获取会话ID的正确方法是什么
String sessionId ;
sessionId = Session.SessionID;
Run Code Online (Sandbox Code Playgroud)
要么
string sessionId = Request["http_cookie"];
sessionId = sessionId.Substring(sessionId.Length - 24);
Run Code Online (Sandbox Code Playgroud)
实际上我是C#的新手,只是跳进了我找到第二个代码的项目,谷歌我找到了第一个代码,所以任何人都请告诉我实际使用的代码是什么
我正在编写一些基于SessionID的日志代码...
但是,当我注销(调用Session.Abandon)并再次登录时,SessionID仍然是相同的.基本上我的PC上的每个浏览器都有自己的会话ID"附加",并且由于某种原因它不会改变:/
有什么想法发生了什么?
我的Session配置如下所示:
<sessionState
mode="InProc"
timeout="1" />
Run Code Online (Sandbox Code Playgroud)
谢谢,Paweł