|
9 | 9 |
|
10 | 10 | class JwtSession implements SessionHandlerInterface |
11 | 11 | { |
12 | | - const COOKIE_PREFIX = "AUTH_BEARER_"; |
| 12 | + const string COOKIE_PREFIX = "AUTH_BEARER_"; |
13 | 13 |
|
14 | 14 | /** |
15 | 15 | * @var SessionConfig |
@@ -152,9 +152,13 @@ public function read(string $id): string |
152 | 152 | { |
153 | 153 | try { |
154 | 154 | if (isset($_COOKIE[self::COOKIE_PREFIX . $this->sessionConfig->getSessionContext()])) { |
| 155 | + $key = $this->sessionConfig->getKey(); |
| 156 | + if ($key === null) { |
| 157 | + return ''; |
| 158 | + } |
155 | 159 | $jwt = new JwtWrapper( |
156 | 160 | $this->sessionConfig->getServerName(), |
157 | | - $this->sessionConfig->getKey() |
| 161 | + $key |
158 | 162 | ); |
159 | 163 | $data = $jwt->extractData($_COOKIE[self::COOKIE_PREFIX . $this->sessionConfig->getSessionContext()]); |
160 | 164 |
|
@@ -192,9 +196,13 @@ public function read(string $id): string |
192 | 196 | #[\Override] |
193 | 197 | public function write(string $id, string $data): bool |
194 | 198 | { |
| 199 | + $key = $this->sessionConfig->getKey(); |
| 200 | + if ($key === null) { |
| 201 | + return false; |
| 202 | + } |
195 | 203 | $jwt = new JwtWrapper( |
196 | 204 | $this->sessionConfig->getServerName(), |
197 | | - $this->sessionConfig->getKey() |
| 205 | + $key |
198 | 206 | ); |
199 | 207 | $session_data = $jwt->createJwtData(['data' => $data], $this->sessionConfig->getTimeoutMinutes() * 60, 0, null); |
200 | 208 | $token = $jwt->generateToken($session_data); |
@@ -239,6 +247,9 @@ public function unSerializeSessionData($session_data): array |
239 | 247 | while ($offset < strlen($session_data)) { |
240 | 248 | if (!str_contains(substr($session_data, $offset), "|")) throw new JwtSessionException("invalid data, remaining: " . substr($session_data, $offset)); |
241 | 249 | $pos = strpos($session_data, "|", $offset); |
| 250 | + if ($pos === false) { |
| 251 | + throw new JwtSessionException("invalid data, pipe not found"); |
| 252 | + } |
242 | 253 | $num = $pos - $offset; |
243 | 254 | $varname = substr($session_data, $offset, $num); |
244 | 255 | $offset += $num + 1; |
|
0 commit comments