Questions tagged «session»

会话是指单个客户端和服务器之间的通信。会话是特定于用户的,并且为每个用户创建一个新会话以跟踪该用户的所有请求。


3
会话的“秘密”选项是什么?
我对加密一无所知。我想知道会话秘密是什么。 我看到这样的代码: app.use(express.session({ store: mongoStore({ url: app.set('db-uri') }), secret: 'topsecret' })); 什么是秘密,我应该更改吗?
111 node.js  session  connect 

10
Session.Abandon()和Session.Clear()有什么区别
销毁会话和删除其值之间有什么区别?您能否提供一个示例来说明这一点? 我搜索了这个问题,但没有掌握全部答案。一些答案是: Session.Abandon() 破坏会议 Session.Clear() 只是删除所有值 一位朋友告诉我: 清除会话不会取消会话的设置,它仍然具有相同的用户ID,但只清除了值。 放弃将完全破坏该会话,这意味着您需要开始一个新会话,然后才能在该用户中为该用户存储更多值。 以下代码有效,并且不会引发任何异常。 Session.Abandon(); Session["tempKey1"] = "tempValue1"; 当您放弃会话时,您(或用户)将获得一个新的SessionId。 当我测试会话时,放弃会话时不会做任何更改。 我只是发现一个不同: session.Abandon()引发Session_End事件


7
Firefox会话Cookie
一般而言,当给定一个没有有效期的cookie时,现代浏览器会将其视为“会话cookie”,它们将在浏览会话结束时(通常是在浏览器实例关闭时)删除该cookie。 IE,Opera,Safari和Chrome均支持此行为。 但是firefox(最新的3.0.9正确发行版)似乎不遵循此规则,从我可以看出,当浏览器关闭,用户注销或重新启动操作系统时,cookie不会过期。 那么,当Firefox无限期地持续存在时,为什么将它们称为会话Cookie? 有谁知道Firefox如何处理会话Cookie过期?
105 firefox  cookies  session 

2
为什么标准会话生存期为24分钟(1440秒)?
我一直在研究PHP会话处理,发现session.gc_maxlifetime值1440秒。我一直想知道为什么标准值为1440,以及如何计算?此计算的依据是什么? 保持会话多长时间才有意义?您会建议session.gc_maxlifetime的最小/最大值是多少?我说,价值越高,Web应用程序在会话劫持中就越容易受到攻击。
101 php  security  session 

4
会话如何在Express.js和Node.js中工作?
使用Express.js,会话非常简单。我很好奇它们实际上是如何工作的。 它会在客户端上存储一些cookie吗?如果是这样,我在哪里可以找到该Cookie?如果需要,如何解码? 我基本上希望能够查看用户是否登录,即使该用户当时实际上不在该站点上(例如,当您在其他站点上时,facebook如何知道您已登录)。但是我想了解的是,我应该首先了解会议的工作方式。

3
如何使用PHP正确添加跨站点请求伪造(CSRF)令牌
我正在尝试为我的网站上的表单添加一些安全性。一种形式是使用AJAX,另一种形式是简单的“与我们联系”形式。我正在尝试添加CSRF令牌。我遇到的问题是令牌有时仅在HTML“值”中显示。其余时间,该值为空。这是我在AJAX表单上使用的代码: PHP: if (!isset($_SESSION)) { session_start(); $_SESSION['formStarted'] = true; } if (!isset($_SESSION['token'])) {$token = md5(uniqid(rand(), TRUE)); $_SESSION['token'] = $token; } 的HTML <form> //... <input type="hidden" name="token" value="<?php echo $token; ?>" /> //... </form> 有什么建议?
96 php  security  session  csrf 

9
socket.io和会话?
我正在使用快速框架。我想从socket.io访问会话数据。我尝试使用client.listener.server.dynamicViewHelpers数据来表达dynamicHelpers,但是我无法获取会话数据。有没有简单的方法可以做到这一点?请看代码 app.listen(3000); var io = require('socket.io'); var io = io.listen(app); io.on('connection', function(client){ // I want to use session data here client.on('message', function(message){ // or here }); client.on('disconnect', function(){ // or here }); });


6
由于Django不活动,如何终止会话?
我们的Django应用程序具有以下会话管理要求。 当用户关闭浏览器时,会话期满。 闲置一段时间后,会话将过期。 检测会话由于不活动而过期的时间,并向用户显示适当的消息。 在闲置时间结束前几分钟警告用户即将到期的会话。除了警告,还为用户提供扩展会话的选项。 如果用户正在应用程序中从事长时间的业务活动,而该活动不涉及将请求发送到服务器,则会话一定不能超时。 阅读文档,Django代码和与此相关的一些博客文章之后,我想出了以下实现方法。 要求1 通过将SESSION_EXPIRE_AT_BROWSER_CLOSE设置为True可以轻松实现此要求。 要求2 我看到了一些建议,可以使用SESSION_COOKIE_AGE来设置会话的有效期限。但是这种方法具有以下问题。 即使用户正在积极使用应用程序,会话也总是在SESSION_COOKIE_AGE结束时到期。(这可以通过使用自定义中间件将每个请求的会话过期设置为SESSION_COOKIE_AGE来防止,或者通过将SESSION_SAVE_EVERY_REQUEST设置为true来保存每个请求的会话。但是由于使用了SESSION_COOKIE_AGE,下一个问题是不可避免的。) 由于cookie的工作方式,SESSION_EXPIRE_AT_BROWSER_CLOSE和SESSION_COOKIE_AGE是互斥的,即cookie在浏览器关闭时或在指定的到期时间到期。如果使用了SESSION_COOKIE_AGE并且用户在cookie过期之前关闭了浏览器,则cookie被保留,重新打开浏览器将允许用户(或其他任何人)进入系统而无需重新认证。 Django仅依靠存在的cookie来确定会话是否处于活动状态。它不检查与会话存储的会话到期日期。 以下方法可用于实现此要求并解决上述问题。 不要设置SESSION_COOKIE_AGE。 对于每个请求,将会话的到期日期设置为“当前时间+闲置时间”。 覆盖SessionMiddleware中的process_request并检查会话到期。如果会话已过期,则将其丢弃。 要求3 当我们检测到会话已过期时(在上面的自定义SessionMiddleware中),请在请求上设置一个属性以指示会话已过期。此属性可用于向用户显示适当的消息。 要求4 使用JavaScript检测用户的不活动状态,提供警告以及扩展会话的选项。如果用户希望扩展,请向服务器发送一个保持活动状态的脉冲以扩展会话。 要求5 使用JavaScript来检测用户活动(在长时间的业务操作过程中),并向服务器发送保持活动状态的脉冲,以防止会话到期。 上面的实现方法似乎非常复杂,我想知道是否可能有一个更简单的方法(尤其是对于要求2)。 任何见解将不胜感激。

17
跨子域的PHP会话
我正在尝试设置以下内容: auth.example.com sub1.example.com sub2.example.com 如果用户访问sub1.example.com或sub2.example.com且他们尚未登录,则他们将被重定向到auth.example.com并可以登录。 sub1.example.com和sub2.example.com是两个独立的应用程序,但使用相同的凭据。 我尝试在php.ini中设置以下内容: session.cookie_domain = ".example.com" 但它似乎并未将信息从一个域传递到另一个域。 [编辑] 我尝试了以下方法: sub1.example.com/test.php session_set_cookie_params(0, '/', '.example.com'); session_start(); print session_id() . "<br>"; $_SESSION['Regsitered'] = 1; echo '<a href="http://auth.example.com/test.php">Change Sites</a>' auth.example.com/test.php session_set_cookie_params(0, '/', '.example.com'); session_start(); print session_id() . "<br>"; $_SESSION['Checked'] = 1; print_r($_SESSION); 会话ID完全相同,但是当我转储$_SESSION变量时,它不会显示两个键,而不会显示我在每个域下设置的任何键。

3
使用Redis存储会话有多安全?
我当前正在使用MySql来存储我的会话。效果很好,但是有点慢。 我曾被要求使用Redis,但我想知道这是否是一个好主意,因为我听说Redis会延迟写入操作。我有点害怕,因为会话需要是实时的。 有没有人遇到过这样的问题?
92 session  redis 

9
在Rails的子域之间共享会话(cookie)?
我有一个应用程序设置,其中每个用户都属于一家公司,并且该公司有一个子域(我正在使用basecamp样式的子域)。我面临的问题是,rails正在创建多个cookie(一个用于lvh.me,另一个用于subdomain.lvh.me),这导致我的应用程序中出现了很多中断(例如,虽然所有请求都一次通过,但Flash消息仍然存在)登录)。 我在/cofig/initilizers/session_store.rb文件中有此文件: AppName::Application.config.session_store :cookie_store, key: '_application_devise_session', domain: :all 域::all似乎是我在Google上找到的标准答案,但这似乎对我不起作用。任何帮助表示赞赏!


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.