go_sso 0.5.7 → 0.5.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc53ee5f651b028c9c5eff100af5707a5166d7040eb2f415beebf5b2568e89d0
4
- data.tar.gz: 9d30581465647c10a93c72f8cead449302e12447c60ff55d47d317329453c592
3
+ metadata.gz: 29f3d54e6659473f6789dab9172a3d8c7800448782daaab961407f673499a6b0
4
+ data.tar.gz: 91a0b671cb93eede2bf50ec46bfc8f68d3bd48ac4669c8b1f2a9d6a07fbcda67
5
5
  SHA512:
6
- metadata.gz: 54335b52741f2ebe5bd66db64653bfb12da8b3ca4e5f548771b050f27130ff447fcd37c100adbb18f19c9a33f5cc27edc64d3c5a58fb4a4397fb7bb4f9f0ac66
7
- data.tar.gz: cb1b290595b73090fdd35b06b88821d36cedd58a19779daee76daa9a0a1cd193b186bab23b1afb857701129596ae4d135a09aab1bb9b7b6eb40a01f8e4751bdf
6
+ metadata.gz: 677cc57a7d920d4100341114975c63a3bae27c1d688b946b1df5849a4dd6e9959063071f6e60e0308492f1f007e8ac52c8631b4c8139c6b44856ec57f8428fd3
7
+ data.tar.gz: c2dc18923f404779aa405a1aea3ceaaba35bd40e317a76eda7ed5aee0acb2ea1a3001a9542778984909536ccda2fad19ce095356848a5d94c902f0d55426468a
@@ -39,7 +39,9 @@ module GoSso
39
39
  end
40
40
 
41
41
  def request_call
42
- session[:go_sso_referrer] = request.params["redirect_url"] || request.referrer || request.base_url
42
+ session[:go_sso_referrer] = safe_redirect_target(request.params["redirect_url"]) ||
43
+ safe_redirect_target(request.referrer) ||
44
+ request.base_url
43
45
 
44
46
  if GoSso.test_mode?
45
47
  redirect client_callback_path
@@ -50,7 +52,9 @@ module GoSso
50
52
 
51
53
  def logout_call
52
54
  set_sso_token(nil)
53
- redirect request.params["redirect_url"] || request.referrer || request.base_url
55
+ redirect safe_redirect_target(request.params["redirect_url"]) ||
56
+ safe_redirect_target(request.referrer) ||
57
+ request.base_url
54
58
  end
55
59
 
56
60
  def callback_call
@@ -108,5 +112,26 @@ module GoSso
108
112
  def url_options
109
113
  { script_name: request.script_name, protocol: "https" }
110
114
  end
115
+
116
+ # Reject values that could either crash JSON cookie serialization
117
+ # (invalid UTF-8) or trigger an open redirect (off-host targets,
118
+ # protocol-relative URLs, non-http(s) schemes). Returns nil to fall
119
+ # back to the safe default in the caller.
120
+ def safe_redirect_target(url)
121
+ return nil unless url.is_a?(String)
122
+ return nil unless url.dup.force_encoding(Encoding::UTF_8).valid_encoding?
123
+ return nil if url.empty?
124
+ return nil if url.start_with?("//")
125
+
126
+ uri = URI.parse(url) rescue nil
127
+ return nil unless uri
128
+
129
+ if uri.absolute?
130
+ return nil unless %w[http https].include?(uri.scheme)
131
+ return nil unless uri.host&.casecmp(GoSso::Current.host.to_s) == 0
132
+ end
133
+
134
+ url
135
+ end
111
136
  end
112
137
  end
@@ -1,3 +1,3 @@
1
1
  module GoSso
2
- VERSION = '0.5.7'
2
+ VERSION = '0.5.9'
3
3
  end
metadata CHANGED
@@ -1,45 +1,44 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: go_sso
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.7
4
+ version: 0.5.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yi Feng
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2023-05-27 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
- name: oauth2
13
+ name: rails
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
- - - "~>"
16
+ - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: 1.4.0
18
+ version: 7.2.0
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
- - - "~>"
23
+ - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: 1.4.0
25
+ version: 7.2.0
27
26
  - !ruby/object:Gem::Dependency
28
- name: sqlite3
27
+ name: oauth2
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
- - - ">="
30
+ - - "~>"
32
31
  - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
32
+ version: 2.0.0
33
+ type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
- - - ">="
37
+ - - "~>"
39
38
  - !ruby/object:Gem::Version
40
- version: '0'
39
+ version: 2.0.0
41
40
  - !ruby/object:Gem::Dependency
42
- name: pry
41
+ name: sqlite3
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
44
  - - ">="
@@ -53,7 +52,7 @@ dependencies:
53
52
  - !ruby/object:Gem::Version
54
53
  version: '0'
55
54
  - !ruby/object:Gem::Dependency
56
- name: simplecov
55
+ name: pry
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
58
  - - ">="
@@ -67,7 +66,7 @@ dependencies:
67
66
  - !ruby/object:Gem::Version
68
67
  version: '0'
69
68
  - !ruby/object:Gem::Dependency
70
- name: mocha
69
+ name: simplecov
71
70
  requirement: !ruby/object:Gem::Requirement
72
71
  requirements:
73
72
  - - ">="
@@ -81,7 +80,7 @@ dependencies:
81
80
  - !ruby/object:Gem::Version
82
81
  version: '0'
83
82
  - !ruby/object:Gem::Dependency
84
- name: appraisal
83
+ name: mocha
85
84
  requirement: !ruby/object:Gem::Requirement
86
85
  requirements:
87
86
  - - ">="
@@ -95,7 +94,7 @@ dependencies:
95
94
  - !ruby/object:Gem::Version
96
95
  version: '0'
97
96
  - !ruby/object:Gem::Dependency
98
- name: dotenv-rails
97
+ name: appraisal
99
98
  requirement: !ruby/object:Gem::Requirement
100
99
  requirements:
101
100
  - - ">="
@@ -131,7 +130,6 @@ homepage: https://github.com/yfxie/go_sso
131
130
  licenses:
132
131
  - MIT
133
132
  metadata: {}
134
- post_install_message:
135
133
  rdoc_options: []
136
134
  require_paths:
137
135
  - lib
@@ -146,8 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
144
  - !ruby/object:Gem::Version
147
145
  version: '0'
148
146
  requirements: []
149
- rubygems_version: 3.3.7
150
- signing_key:
147
+ rubygems_version: 3.6.9
151
148
  specification_version: 4
152
149
  summary: Summary of GoSso.
153
150
  test_files: []