summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2016-03-08 19:02:02 +0100
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2016-03-08 19:02:02 +0100
commitc024cfa25ee5c1878a1b35baa96160b2e87e001f (patch)
treef40a50280ddf0a54f73399c481d0743a7e668a19
parent5a7455dc623fc50a1fc9962d98a8b05f48375191 (diff)
parentcd4153912f3c91dcb5d68ea886855e9014684ea0 (diff)
Merge branch 'cookie_secure' into dev
-rw-r--r--CHANGELOG.md1
-rw-r--r--lib/Minz/Request.php17
-rw-r--r--lib/Minz/Session.php6
3 files changed, 16 insertions, 8 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 74cb9d250..a316a1c15 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,7 @@
* Security
* Added CSP `Content-Security-Policy: default-src 'self'; child-src *; frame-src *; img-src * data:; media-src *` [#1075](https://github.com/FreshRSS/FreshRSS/issues/1075), [#1114](https://github.com/FreshRSS/FreshRSS/issues/1114)
* Added `X-Content-Type-Options: nosniff` [#1116](https://github.com/FreshRSS/FreshRSS/pull/1116)
+ * Cookie with `Secure` tag when used over HTTPS [#1117](https://github.com/FreshRSS/FreshRSS/pull/1117)
* Features
* New list of domains for which to force HTTPS (for images, videos, iframes…) defined in `./data/force-https.default.txt` and `./data/force-https.txt` [#1083](https://github.com/FreshRSS/FreshRSS/issues/1083)
* In particular useful for privacy and to avoid mixed content errors, e.g. to see YouTube videos when FreshRSS is in HTTPS
diff --git a/lib/Minz/Request.php b/lib/Minz/Request.php
index effb9943c..81457df9e 100644
--- a/lib/Minz/Request.php
+++ b/lib/Minz/Request.php
@@ -85,6 +85,17 @@ class Minz_Request {
}
/**
+ * Return true if the request is over HTTPS, false otherwise (HTTP)
+ */
+ public static function isHttps() {
+ if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
+ return strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) === 'https';
+ } else {
+ return isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on';
+ }
+ }
+
+ /**
* Try to guess the base URL from $_SERVER information
*
* @return the base url (e.g. http://example.com/)
@@ -92,11 +103,7 @@ class Minz_Request {
public static function guessBaseUrl() {
$url = 'http';
- if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) {
- $https = strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) === 'https';
- } else {
- $https = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on';
- }
+ $https = self::isHttps();
if (!empty($_SERVER['HTTP_HOST'])) {
$host = $_SERVER['HTTP_HOST'];
diff --git a/lib/Minz/Session.php b/lib/Minz/Session.php
index 940cd27d9..c94f2b646 100644
--- a/lib/Minz/Session.php
+++ b/lib/Minz/Session.php
@@ -73,7 +73,7 @@ class Minz_Session {
* @param $l la durée de vie
*/
public static function keepCookie($l) {
- session_set_cookie_params($l, self::getCookieDir(), '', false, true);
+ session_set_cookie_params($l, self::getCookieDir(), '', Minz_Request::isHttps(), true);
}
@@ -86,11 +86,11 @@ class Minz_Session {
}
public static function deleteLongTermCookie($name) {
- setcookie($name, '', 1, '', '', false, true);
+ setcookie($name, '', 1, '', '', Minz_Request::isHttps(), true);
}
public static function setLongTermCookie($name, $value, $expire) {
- setcookie($name, $value, $expire, '', '', false, true);
+ setcookie($name, $value, $expire, '', '', Minz_Request::isHttps(), true);
}
public static function getLongTermCookie($name) {