标签: session-cookies

检查cookie是否已启用

我正在开发一个需要javascript和会话的页面.如果禁用了javascript,我已经有代码警告用户.现在,我想处理禁用cookie的情况,因为会话ID存储在cookie中.

我想到了几个想法:

  1. 在会话ID和表单中嵌入会话ID
  2. 警告用户如果禁用了cookie,他们必须启用cookie(需要帮助检测是否禁用了cookie)

解决这个问题的最佳方法是什么?谢谢

编辑

根据链接的文章,我提出了自己的方法,并认为我会分享,其他人可能会使用它,也许我会得到一些批评.(假设您的PHP会话存储在名为的cookie中PHPSESSID)

<div id="form" style="display:none">Content goes here</div>
<noscript>Sorry, but Javascript is required</noscript>
<script type="text/javascript"><!--
if(document.cookie.indexOf('PHPSESSID')!=-1)
   document.getElementById('form').style.display='';
else
   document.write('<p>Sorry, but cookies must be enabled</p>');
--></script>
Run Code Online (Sandbox Code Playgroud)

javascript php session-cookies

65
推荐指数
5
解决办法
9万
查看次数

63
推荐指数
6
解决办法
18万
查看次数

如何保护ASP.NET_SessionId cookie?

我已将.ASPXAUTH cookie设置为仅https,但我不确定如何使用ASP.NET_SessionId有效地执行相同操作.

整个站点使用HTTPS,因此cookie不需要同时使用http和https.

c# asp.net session-cookies

58
推荐指数
4
解决办法
10万
查看次数

localStorage vs sessionStorage vs cookies

我在一个应用程序中工作,我需要在用户登录期间保留一些数据,我有这个问题,localStorage,sessionStorage,cookies有什么区别???

我问我可以使用什么来保存DOM中的一些数据,即使用户刷新页面,有些人说:使用sessionStorage或localStorage,然后,有人提出使用ngCookies的想法因为它可以工作每个浏览器,但是,我应该使用哪个?

cookies html5 session-cookies local-storage angularjs

58
推荐指数
4
解决办法
6万
查看次数

Apache JMeter中的会话/ cookie管理

我们在应用程序中有一个简单的性能测试流程.

  1. 我们登录
  2. 根据一些标准进行搜索
  3. 重复搜索不同的参数.

我们正在使用Jmeter进行性能测试.我们需要运行多个线程以可伸缩的方式对其进行测试.

我们目前安排的方式是:

-Test Plan
  - Thread Group
      - Cookie Manager
      - Login To application
      - Search on param 1
      - Search on param 2
  - results summary table
  - Summary report
Run Code Online (Sandbox Code Playgroud)

因此,基本上我们在计划级别上有汇总返回表和报告,而cookie管理器存在于线程组级别.

当我为一个线程运行时,它运行良好并且完成得很好.当我将它扩展到多个线程时,一旦下一个线程启动,最后一个线程的会话就会失效.由于新生成的线程,这会导致所有已经运行的线程出现故障.

我通过观察得出了这个结果:
1.如果我运行多个线程,只有最后一个线程在结果摘要树
2中得到了有效的响应 .如果我运行2个线程,加速周期为10秒,这意味着每个线程都有时间完成本身,然后他们都成功运行.

根据我的理解,每个线程登录到应用程序,并且由于cookie管理器处于线程级别,因此将分别为每个线程的会话ID维护这些值?但是什么导致线程之间的会话id值被覆盖?

任何帮助都感激不尽.

java cookies session jmeter session-cookies

51
推荐指数
2
解决办法
8万
查看次数

Scrapy - 如何管理cookie /会话

关于cookies如何与Scrapy一起工作,以及如何管理这些cookie,我有点困惑.

这基本上是我正在尝试做的简化版本: 在此输入图像描述


网站的运作方式:

当您访问该网站时,您将获得一个会话cookie.

当您进行搜索时,网站会记住您搜索的内容,因此当您执行类似于进入下一页结果的操作时,它会知道它正在处理的搜索.


我的剧本:

我的蜘蛛有一个searchpage_url的起始网址

请求parse()搜索页面,并将搜索表单响应传递给search_generator()

search_generator()那么yield很多搜索请求使用FormRequest和搜索表单响应.

每个FormRequests和后续子请求都需要拥有自己的会话,因此需要拥有自己的cookiejar和自己的会话cookie.


我已经看到了文档的一部分,它讨论了一个阻止cookie被合并的元选项.这究竟意味着什么?是否意味着提出请求的蜘蛛将在其余生中拥有自己的cookiejar?

如果cookie是按蜘蛛级别进行的,那么当生成多个蜘蛛时它是如何工作的?是否有可能只使第一个请求生成器产生新的蜘蛛,并确保从那时起只有该蜘蛛处理未来的请求?

我假设我必须禁用多个并发请求..否则一个蜘蛛会在同一会话cookie下进行多次搜索,未来的请求只会涉及最近的搜索?

我很困惑,任何澄清都会受到极大的欢迎!


编辑:

我刚才想到的另一个选择是完全手动管理会话cookie,并将其从一个请求传递到另一个请求.

我想这意味着禁用cookie ..然后从搜索响应中获取会话cookie,并将其传递给每个后续请求.

这是你在这种情况下应该做的吗?

python cookies session session-cookies scrapy

51
推荐指数
2
解决办法
4万
查看次数

Rails中签名和加密的cookie有什么区别?

文档ActionDispatch::Cookies为签名cookie和加密cookie提供了几乎相同的描述.它似乎都用于secrets.secret_key_base防止客户端篡改.http://api.rubyonrails.org/classes/ActionDispatch/Cookies.html

签名饼干

设置已签名的cookie,以防止用户篡改其值.Cookie由您应用的secrets.secret_key_base价值签名.可以使用signed方法读取它cookies.signed[:name]

cookies.signed[:user_id] = current_user.id
Run Code Online (Sandbox Code Playgroud)

加密的cookie

在将加密的cookie值发送到客户端之前设置它,以防止用户读取和篡改其值.Cookie由您应用的secrets.secret_key_base价值签名.可以使用加密方法读取它cookies.encrypted[:name]

cookies.encrypted[:discount] = 45
Run Code Online (Sandbox Code Playgroud)

我的问题是:两者有什么区别?

你什么时候想要使用另一个?

cookies ruby-on-rails session-cookies

40
推荐指数
1
解决办法
6513
查看次数

路径部分中带有//的URL是否有效?

我有一个关于网址的问题:

我已经阅读了RFC 3986,但仍然有一个关于一个URL的问题:

如果URI包含权限组件,则路径组件
必须为空或以斜杠("/")字符开头.如果URI不包含权限组件,则路径不能
以两个斜杠字符("//")开头.此外,URI引用
(第4.1节)可以是相对路径引用,在这种情况下,
第一个路径段不能包含冒号(":")字符.ABNF
需要五个单独的规则来消除这些情况的歧义,其中只有一个与给定URI引用中的路径子字符串匹配.我们使用通用术语"路径组件"来描述
解析器与其中一个规则匹配的URI子字符串.

我知道,这//server.com:80/path/info是有效的(它是一个架构相对URL)

我也知道这http://server.com:80/path//info是有效的.

但我不确定以下一个是否有效:

http://server.com:80//path/info
Run Code Online (Sandbox Code Playgroud)

我的问题背后的问题是,http://server.com:80//path/info当URI http://server.com:80/path/info由限制创建时,不会发送cookie/path

cookies url http rfc3986 session-cookies

37
推荐指数
1
解决办法
3万
查看次数

未初始化的常量ActionDispatch :: Session :: EncryptedCookieStore(NameError)

我和乘客在轨道4上.一切都很顺利,直到我bundle刚才做了.现在我遇到以下错误:

Web application could not be started

uninitialized constant ActionDispatch::Session::EncryptedCookieStore (NameError)
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-2ac97df55230/railties/lib/rails/application/configuration.rb:144:in `const_get'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-2ac97df55230/railties/lib/rails/application/configuration.rb:144:in `session_store'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-2ac97df55230/railties/lib/rails/application.rb:345:in `block in default_middleware_stack'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-2ac97df55230/railties/lib/rails/application.rb:307:in `tap'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-2ac97df55230/railties/lib/rails/application.rb:307:in `default_middleware_stack'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-2ac97df55230/railties/lib/rails/engine.rb:494:in `app'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-2ac97df55230/railties/lib/rails/application/finisher.rb:34:in `block in <module:Finisher>'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-2ac97df55230/railties/lib/rails/initializable.rb:30:in `instance_exec'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-2ac97df55230/railties/lib/rails/initializable.rb:30:in `run'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-2ac97df55230/railties/lib/rails/initializable.rb:55:in `block in run_initializers'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/tsort.rb:150:in `block in tsort_each'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/tsort.rb:183:in `block (2 levels) in each_strongly_connected_component'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/tsort.rb:219:in `each_strongly_connected_component_from'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/tsort.rb:182:in `block in each_strongly_connected_component'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/tsort.rb:180:in `each'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/tsort.rb:180:in `each_strongly_connected_component'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/tsort.rb:148:in `tsort_each'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-2ac97df55230/railties/lib/rails/initializable.rb:54:in `run_initializers'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-2ac97df55230/railties/lib/rails/application.rb:214:in `initialize!'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/bundler/gems/rails-2ac97df55230/railties/lib/rails/railtie/configurable.rb:30:in `method_missing'
  /opt/ptolemy-web/config/environment.rb:5:in `<top (required)>'
  config.ru:3:in `require'
  config.ru:3:in `block in <main>'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `instance_eval'
  /u/sf/ytl/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `initialize' …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails passenger session-cookies

35
推荐指数
1
解决办法
7203
查看次数

使用基于HttpOnly cookie的单页应用程序进行身份验证和会话管理

几天来,我一直在为单页面应用程序寻找安全的身份验证和会话管理机制.从有关SPA和身份验证的众多教程和博客文章来看,将JWT存储在localStorage或常规cookie中似乎是最常用的方法,但将JWT用于会话并不是一个好主意因此它不是这个应用程序的选项.

要求

  • 登录应该是可以撤销的.例如,如果在用户的帐户上检测到可疑活动,则应该可以立即撤消该用户的访问权限并需要新登录.同样,密码重置等操作应撤消所有现有登录.
  • 身份验证应该通过Ajax进行.之后不应该进行浏览器重定向("硬"重定向).所有导航都应该在SPA内部进行.
  • 一切都应该跨域工作.SPA将在www.domain1.com上,服务器将在www.domain2.com上.
  • JavaScript应该无权访问服务器发送的敏感数据,例如会话ID.这是为了防止XSS攻击,其中恶意脚本可以从常规cookie,localStorage或sessionStorage中窃取令牌或会话ID.

理想的机制似乎是使用HttpOnly包含会话ID的cookie进行基于cookie的身份验证.流程将如下工作:

  1. 用户到达登录页面并提交其用户名和密码.
  2. 服务器对用户进行身份验证,并将会话ID作为HttpOnly响应cookie 发送.
  3. 然后,SPA在随后向服务器发出的XHR请求中包含此cookie.这似乎可以使用该withCredentials选项.
  4. 当向受保护的端点发出请求时,服务器会查找cookie.如果找到,它会将该会话ID与数据库表进行交叉检查,以确保会话仍然有效.
  5. 当用户注销时,会话将从数据库中删除.下次用户到达站点时,SPA会收到401/403响应(因为会话已过期),然后将用户带到登录屏幕.

因为cookie具有HttpOnly标志,JavaScript将无法读取其内容,因此只要通过HTTPS传输,它就不会受到攻击.

挑战

这是我遇到的具体问题.我的服务器配置为处理CORS请求.在对用户进行身份验证后,它会在响应中正确发送cookie:

HTTP/1.1 200 OK
server: Cowboy
date: Wed, 15 Mar 2017 22:35:46 GMT
content-length: 59
set-cookie: _myapp_key=SFMyNTYBbQAAABBn; path=/; HttpOnly
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate
x-request-id: qi2q2rtt7mpi9u9c703tp7idmfg4qs6o
access-control-allow-origin: http://localhost:8080
access-control-expose-headers: 
access-control-allow-credentials: true
vary: Origin
Run Code Online (Sandbox Code Playgroud)

但是,浏览器不保存cookie(当我检查Chrome的本地cookie时,它不存在).因此,当以下代码运行时:

context.axios.post(LOGIN_URL, creds).then(response => {
  context.$router.push("/api/account")
}
Run Code Online (Sandbox Code Playgroud)

并创建帐户页面:

created() {
  this.axios.get(SERVER_URL + "/api/account/", {withCredentials: true}).then(response => {
    //do stuff
  } …
Run Code Online (Sandbox Code Playgroud)

cookies session-cookies reactjs vue.js vuejs2

35
推荐指数
2
解决办法
8785
查看次数