Skip to content

Commit 785e168

Browse files
committed
Check application.ssl when setting a secure cookie
Most SLL-related code in Laravel checks to see if `application.ssl` is true before doing an action requiring it. `Cookie::put()` is the only exception that I've found, to date, that doesn't test for SSL. This checks to see that the SSL is enabled when attempting to set a secure cookie. To verify, set `application.ssl` to false (without this patch) then run: Cookie::put('foo', 'bar', 0, '/', null, true); You will get an exception because of line 90 in `cookie.php`: if ($secure and ! Request::secure()) { throw new \Exception("Attempting to set secure cookie over HTTP."); } With this patch you will not get this error unless both `application.ssl` is true, and the cookie `$secure` flag is set.
1 parent 5dd3ec6 commit 785e168

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

laravel/cookie.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ public static function put($name, $value, $expiration = 0, $path = '/', $domain
8282

8383
$value = static::hash($value).'+'.$value;
8484

85+
// If the developer has explicitly disabled SLL, then we shouldn't force
86+
// this cookie over SSL.
87+
$secure = $secure && Config::get('application.ssl');
88+
8589
// If the secure option is set to true, yet the request is not over HTTPS
8690
// we'll throw an exception to let the developer know that they are
8791
// attempting to send a secure cookie over the insecure HTTP.

0 commit comments

Comments
 (0)