@@ -54,8 +54,8 @@ discard block |
||
54 | 54 | private $saltedKey; |
55 | 55 | |
56 | 56 | /** |
57 | - * @param $key a per-site secret string which is used as the base encryption key. |
|
58 | - * @param $salt a per-session random string which is used as a salt to generate a per-session key |
|
57 | + * @param string $key a per-site secret string which is used as the base encryption key. |
|
58 | + * @param string $salt a per-session random string which is used as a salt to generate a per-session key |
|
59 | 59 | * |
60 | 60 | * The base encryption key needs to stay secret. If an attacker ever gets it, they can read their session, |
61 | 61 | * and even modify & re-sign it. |
@@ -79,7 +79,7 @@ discard block |
||
79 | 79 | /** |
80 | 80 | * Encrypt and then sign some cleartext |
81 | 81 | * |
82 | - * @param $cleartext - The cleartext to encrypt and sign |
|
82 | + * @param string $cleartext - The cleartext to encrypt and sign |
|
83 | 83 | * @return string - The encrypted-and-signed message as base64 ASCII. |
84 | 84 | */ |
85 | 85 | public function encrypt($cleartext) { |
@@ -101,8 +101,8 @@ discard block |
||
101 | 101 | /** |
102 | 102 | * Check the signature on an encrypted-and-signed message, and if valid decrypt the content |
103 | 103 | * |
104 | - * @param $data - The encrypted-and-signed message as base64 ASCII |
|
105 | - * @return bool|string - The decrypted cleartext or false if signature failed |
|
104 | + * @param string $data - The encrypted-and-signed message as base64 ASCII |
|
105 | + * @return string|false - The decrypted cleartext or false if signature failed |
|
106 | 106 | */ |
107 | 107 | public function decrypt($data) { |
108 | 108 | $data = base64_decode($data); |
@@ -422,6 +422,9 @@ discard block |
||
422 | 422 | $this->setKey($this->getKey()); |
423 | 423 | } |
424 | 424 | |
425 | + /** |
|
426 | + * @param string $key |
|
427 | + */ |
|
425 | 428 | public function setKey($key) { |
426 | 429 | parent::setKey($key); |
427 | 430 | foreach($this->handlers as $handler) { |
@@ -32,8 +32,7 @@ discard block |
||
32 | 32 | |
33 | 33 | register_shutdown_function('session_write_close'); |
34 | 34 | } |
35 | -} |
|
36 | -else { |
|
35 | +} else { |
|
37 | 36 | function register_sessionhandler($handler) { |
38 | 37 | session_set_save_handler($handler, true); |
39 | 38 | } |
@@ -122,7 +121,9 @@ discard block |
||
122 | 121 | // Needs to be after decrypt so it always runs, to avoid timing attack |
123 | 122 | $gen_hash = hash_hmac('sha256', $enc, $this->saltedKey); |
124 | 123 | |
125 | - if ($gen_hash == $hash) return $cleartext; |
|
124 | + if ($gen_hash == $hash) { |
|
125 | + return $cleartext; |
|
126 | + } |
|
126 | 127 | return false; |
127 | 128 | } |
128 | 129 | } |
@@ -233,7 +234,9 @@ discard block |
||
233 | 234 | // This is intended to force a failover to the database store if the |
234 | 235 | // modified session cannot be emitted. |
235 | 236 | $this->currentCookieData = Cookie::get($this->cookie); |
236 | - if ($this->currentCookieData) Cookie::set($this->cookie, ''); |
|
237 | + if ($this->currentCookieData) { |
|
238 | + Cookie::set($this->cookie, ''); |
|
239 | + } |
|
237 | 240 | } |
238 | 241 | |
239 | 242 | public function close() { |
@@ -247,7 +250,9 @@ discard block |
||
247 | 250 | */ |
248 | 251 | protected function getCrypto($session_id) { |
249 | 252 | $key = $this->getKey(); |
250 | - if(!$key) return null; |
|
253 | + if(!$key) { |
|
254 | + return null; |
|
255 | + } |
|
251 | 256 | if (!$this->crypto || $this->crypto->salt != $session_id) { |
252 | 257 | $this->crypto = new HybridSessionStore_Crypto($key, $session_id); |
253 | 258 | } |
@@ -258,7 +263,9 @@ discard block |
||
258 | 263 | // Check ability to safely decrypt content |
259 | 264 | if(!$this->currentCookieData |
260 | 265 | || !($crypto = $this->getCrypto($session_id)) |
261 | - ) return; |
|
266 | + ) { |
|
267 | + return; |
|
268 | + } |
|
262 | 269 | |
263 | 270 | // Decrypt and invalidate old data |
264 | 271 | $cookieData = $crypto->decrypt($this->currentCookieData); |
@@ -269,7 +276,9 @@ discard block |
||
269 | 276 | $expiry = (int)substr($cookieData, 0, 10); |
270 | 277 | $data = substr($cookieData, 10); |
271 | 278 | |
272 | - if ($expiry > $this->getNow()) return $data; |
|
279 | + if ($expiry > $this->getNow()) { |
|
280 | + return $data; |
|
281 | + } |
|
273 | 282 | } |
274 | 283 | } |
275 | 284 | |
@@ -287,7 +296,9 @@ discard block |
||
287 | 296 | if(!$this->canWrite() |
288 | 297 | || (strlen($session_data) > Config::inst()->get(__CLASS__, 'max_length')) |
289 | 298 | || !($crypto = $this->getCrypto($session_id)) |
290 | - ) return false; |
|
299 | + ) { |
|
300 | + return false; |
|
301 | + } |
|
291 | 302 | |
292 | 303 | // Prepare content for write |
293 | 304 | $params = session_get_cookie_params(); |
@@ -335,7 +346,9 @@ discard block |
||
335 | 346 | */ |
336 | 347 | protected function isDatabaseReady() { |
337 | 348 | // Such as during setup of testsession prior to DB connection. |
338 | - if(!DB::isActive()) return false; |
|
349 | + if(!DB::isActive()) { |
|
350 | + return false; |
|
351 | + } |
|
339 | 352 | |
340 | 353 | // If we have a DB of the wrong type then complain |
341 | 354 | if (!(DB::getConn() instanceof MySQLDatabase)) { |
@@ -353,7 +366,9 @@ discard block |
||
353 | 366 | } |
354 | 367 | |
355 | 368 | public function read($session_id) { |
356 | - if(!$this->isDatabaseReady()) return null; |
|
369 | + if(!$this->isDatabaseReady()) { |
|
370 | + return null; |
|
371 | + } |
|
357 | 372 | |
358 | 373 | $result = DB::query(sprintf( |
359 | 374 | 'SELECT "Data" FROM "HybridSessionDataObject" |
@@ -369,7 +384,9 @@ discard block |
||
369 | 384 | } |
370 | 385 | |
371 | 386 | public function write($session_id, $session_data) { |
372 | - if(!$this->isDatabaseReady()) return false; |
|
387 | + if(!$this->isDatabaseReady()) { |
|
388 | + return false; |
|
389 | + } |
|
373 | 390 | |
374 | 391 | $expiry = $this->getNow() + $this->getLifetime(); |
375 | 392 | DB::query($str = sprintf( |
@@ -389,7 +406,9 @@ discard block |
||
389 | 406 | } |
390 | 407 | |
391 | 408 | public function gc($maxlifetime) { |
392 | - if(!$this->isDatabaseReady()) return; |
|
409 | + if(!$this->isDatabaseReady()) { |
|
410 | + return; |
|
411 | + } |
|
393 | 412 | DB::query(sprintf( |
394 | 413 | 'DELETE FROM "HybridSessionDataObject" WHERE "Expiry" < %u', |
395 | 414 | $this->getNow() |
@@ -454,7 +473,9 @@ discard block |
||
454 | 473 | |
455 | 474 | public function read($session_id) { |
456 | 475 | foreach ($this->handlers as $handler) { |
457 | - if ($data = $handler->read($session_id)) return $data; |
|
476 | + if ($data = $handler->read($session_id)) { |
|
477 | + return $data; |
|
478 | + } |
|
458 | 479 | } |
459 | 480 | |
460 | 481 | return ''; |
@@ -462,7 +483,9 @@ discard block |
||
462 | 483 | |
463 | 484 | public function write($session_id, $session_data) { |
464 | 485 | foreach ($this->handlers as $handler) { |
465 | - if ($handler->write($session_id, $session_data)) return; |
|
486 | + if ($handler->write($session_id, $session_data)) { |
|
487 | + return; |
|
488 | + } |
|
466 | 489 | } |
467 | 490 | } |
468 | 491 |