Ver código fonte

New implementation of cookie

Roman Kelesidis 2 anos atrás
pai
commit
e6e85db062
3 arquivos alterados com 23 adições e 7 exclusões
  1. 3 2
      composer.json
  2. 1 0
      system/data/config.php
  3. 19 5
      system/library/system.php

+ 3 - 2
composer.json

@@ -1,5 +1,6 @@
 {
   "require": {
-    "symfony/polyfill": "*"
+    "symfony/polyfill": "*",
+    "delight-im/cookie": "^3.4"
   }
-}
+}

+ 1 - 0
system/data/config.php

@@ -68,6 +68,7 @@
 		'iptables' => 'iptables_block', // Файл правил для FireWall (блокировка на уровне оборудования) (/root/_FILE_)
 		'cron_key' => 'CRONKEY', // Ключ для cron.php
 		'cron_taskset' => '0', // Ядро, на котором запускать cron.php (уставновить отличный от нуля, если на VDS больше 1 ядра/потока)
+        'cookie_same_site' => 'Lax', // Lax, None, Strict | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
 
 		// Кеш (кол-во секунд)
 		'mcache_server_mon' => 2, // Мониторинг (онлайн, название, карта)

+ 19 - 5
system/library/system.php

@@ -4,6 +4,18 @@
 
 	class sys
 	{
+        public static function isSecure() {
+            $is_secure = false;
+
+            if (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') {
+                $is_secure = true;
+            } elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') {
+                $is_secure = true;
+            }
+
+            return $is_secure;
+        }
+
 		public static function url($all = true)
 		{
 			if($_SERVER['REQUEST_URI'] == '/')
@@ -427,11 +439,13 @@
 			return md5($passwd);
 		}
 
-		public static function cookie($name, $value, $expires)
-		{
-			$expires = time() + ($expires * 86400);
-			setcookie($name, $value, $expires, "/", $_SERVER['HTTP_HOST'], true);
-		}
+        public static function cookie($name, $value, $expires)
+        {
+            global $cfg;
+
+            $expires = time() + ($expires * 86400);
+            \Delight\Cookie\Cookie::setcookie($name, $value, $expires, '/', $cfg['url'], self::isSecure(), true, $cfg['cookie_same_site']);
+        }
 
 		public static function auth()
 		{