]> git.wh0rd.org - tt-rss.git/commitdiff
validate_session: bring back IP session binding (enabled by default) and UA checking
authorAndrew Dolgov <noreply@fakecake.org>
Mon, 15 Oct 2018 05:26:07 +0000 (08:26 +0300)
committerAndrew Dolgov <noreply@fakecake.org>
Mon, 15 Oct 2018 05:26:07 +0000 (08:26 +0300)
include/sessions.php

index c80c21de3a24cc6314f4fe8164c0313363f29cfb..f625cd16f59415f7c672662dffba84bc2afae88b 100644 (file)
         $pdo = Db::pdo();
 
                if ($_SESSION["uid"]) {
+
+                       if (!defined('_SKIP_SESSION_ADDRESS_CHECKS') || !_SKIP_SESSION_ADDRESS_CHECKS) {
+                               if ($_SESSION["ip_address"] != $_SERVER["REMOTE_ADDR"]) {
+                                       $_SESSION["login_error_msg"] = __("Session failed to validate.");
+                                       return false;
+                               }
+                       }
+
+                       if ($_SESSION["user_agent"] != sha1($_SERVER['HTTP_USER_AGENT'])) {
+                               $_SESSION["login_error_msg"] = __("Session failed to validate.");
+                               return false;
+                       }
+
                        $sth = $pdo->prepare("SELECT pwd_hash FROM ttrss_users WHERE id = ?");
                        $sth->execute([$_SESSION['uid']]);