rack-session 2.0.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/rack/session/abstract/id.rb +4 -2
- data/lib/rack/session/pool.rb +7 -1
- data/lib/rack/session/version.rb +1 -1
- data/releases.md +27 -0
- metadata +21 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24dbcb8931b1a26d39b7165f872231e9ce7f9006e8495616416faeb4538ed8e6
|
4
|
+
data.tar.gz: c26f979218fb4ac3b626d8638ee7b0e00183ac1acffdc1fb393fd85919e1cf46
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e345e1424c6092e771a16f15fee04c19128dacfa50b586fbd7795ce1699fe50cbf2b7028624dc945e60a055f20c99c0d88c7c1eec729b13d527f3c3bcc7d6e6e
|
7
|
+
data.tar.gz: 8da88daf469c01ebeef2bb75b5ee04efc42e836807b3000b028fa2eb73f11db3585410321297e7607bd0e9413f768dab2a55e54f08e5326697e1d472f9363e6c
|
@@ -215,7 +215,7 @@ module Rack
|
|
215
215
|
# All parameters are optional.
|
216
216
|
# * :key determines the name of the cookie, by default it is
|
217
217
|
# 'rack.session'
|
218
|
-
# * :path, :domain, :expire_after, :secure, :httponly, and :same_site set
|
218
|
+
# * :path, :domain, :expire_after, :secure, :httponly, :partitioned and :same_site set
|
219
219
|
# the related cookie options as by Rack::Response#set_cookie
|
220
220
|
# * :skip will not a set a cookie in the response nor update the session state
|
221
221
|
# * :defer will not set a cookie in the response but still update the session
|
@@ -244,6 +244,7 @@ module Rack
|
|
244
244
|
expire_after: nil,
|
245
245
|
secure: false,
|
246
246
|
httponly: true,
|
247
|
+
partitioned: false,
|
247
248
|
defer: false,
|
248
249
|
renew: false,
|
249
250
|
sidbits: 128,
|
@@ -257,6 +258,7 @@ module Rack
|
|
257
258
|
@app = app
|
258
259
|
@default_options = self.class::DEFAULT_OPTIONS.merge(options)
|
259
260
|
@key = @default_options.delete(:key)
|
261
|
+
@assume_ssl = @default_options.delete(:assume_ssl)
|
260
262
|
@cookie_only = @default_options.delete(:cookie_only)
|
261
263
|
@same_site = @default_options.delete(:same_site)
|
262
264
|
initialize_sid
|
@@ -368,7 +370,7 @@ module Rack
|
|
368
370
|
|
369
371
|
def security_matches?(request, options)
|
370
372
|
return true unless options[:secure]
|
371
|
-
request.ssl?
|
373
|
+
request.ssl? || @assume_ssl == true
|
372
374
|
end
|
373
375
|
|
374
376
|
# Acquires the session from the environment and the session id from
|
data/lib/rack/session/pool.rb
CHANGED
@@ -53,6 +53,7 @@ module Rack
|
|
53
53
|
|
54
54
|
def write_session(req, session_id, new_session, options)
|
55
55
|
@mutex.synchronize do
|
56
|
+
return false unless get_session_with_fallback(session_id)
|
56
57
|
@pool.store session_id.private_id, new_session
|
57
58
|
session_id
|
58
59
|
end
|
@@ -62,7 +63,12 @@ module Rack
|
|
62
63
|
@mutex.synchronize do
|
63
64
|
@pool.delete(session_id.public_id)
|
64
65
|
@pool.delete(session_id.private_id)
|
65
|
-
|
66
|
+
|
67
|
+
unless options[:drop]
|
68
|
+
sid = generate_sid(use_mutex: false)
|
69
|
+
@pool.store(sid.private_id, {})
|
70
|
+
sid
|
71
|
+
end
|
66
72
|
end
|
67
73
|
end
|
68
74
|
|
data/lib/rack/session/version.rb
CHANGED
data/releases.md
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# Releases
|
2
|
+
|
3
|
+
## v2.1.1
|
4
|
+
|
5
|
+
- Prevent `Rack::Session::Pool` from recreating deleted sessions [CVE-2025-46336](https://github.com/rack/rack-session/security/advisories/GHSA-9j94-67jr-4cqj).
|
6
|
+
|
7
|
+
## v2.1.0
|
8
|
+
|
9
|
+
- Improved compatibility with Ruby 3.3+ and Rack 3+.
|
10
|
+
- Add support for cookie option `partitioned`.
|
11
|
+
- Introduce `assume_ssl` option to allow secure session cookies through insecure proxy.
|
12
|
+
|
13
|
+
## v2.0.0
|
14
|
+
|
15
|
+
- Initial migration of code from Rack 2, for Rack 3 release.
|
16
|
+
|
17
|
+
## v1.0.2
|
18
|
+
|
19
|
+
- Fix missing `rack/session.rb` file.
|
20
|
+
|
21
|
+
## v1.0.1
|
22
|
+
|
23
|
+
- Pin to `rack < 3`.
|
24
|
+
|
25
|
+
## v1.0.0
|
26
|
+
|
27
|
+
- Empty shim release for Rack 2.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-session
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
@@ -11,8 +11,22 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2025-05-06 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: base64
|
18
|
+
requirement: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.1.0
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.1.0
|
16
30
|
- !ruby/object:Gem::Dependency
|
17
31
|
name: rack
|
18
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -112,11 +126,13 @@ files:
|
|
112
126
|
- lib/rack/session/version.rb
|
113
127
|
- license.md
|
114
128
|
- readme.md
|
129
|
+
- releases.md
|
115
130
|
- security.md
|
116
131
|
homepage: https://github.com/rack/rack-session
|
117
132
|
licenses:
|
118
133
|
- MIT
|
119
|
-
metadata:
|
134
|
+
metadata:
|
135
|
+
rubygems_mfa_required: 'true'
|
120
136
|
post_install_message:
|
121
137
|
rdoc_options: []
|
122
138
|
require_paths:
|
@@ -125,14 +141,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
125
141
|
requirements:
|
126
142
|
- - ">="
|
127
143
|
- !ruby/object:Gem::Version
|
128
|
-
version: 2.
|
144
|
+
version: '2.5'
|
129
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
146
|
requirements:
|
131
147
|
- - ">="
|
132
148
|
- !ruby/object:Gem::Version
|
133
149
|
version: '0'
|
134
150
|
requirements: []
|
135
|
-
rubygems_version: 3.
|
151
|
+
rubygems_version: 3.5.22
|
136
152
|
signing_key:
|
137
153
|
specification_version: 4
|
138
154
|
summary: A session implementation for Rack.
|