diff --git a/include/csrfmagic/csrf-magic.php b/include/csrfmagic/csrf-magic.php index e9dbbbf733..1cb3ff75f0 100644 --- a/include/csrfmagic/csrf-magic.php +++ b/include/csrfmagic/csrf-magic.php @@ -201,9 +201,15 @@ function csrf_ob_handler($buffer, $flags) { * @return boolean true if check passes or is not necessary, false if failure. */ function csrf_check($fatal = true) { - if (empty($_SERVER['REQUEST_METHOD']) || $_SERVER['REQUEST_METHOD'] !== 'POST') { + global $site_URL; + if (empty($_SERVER['HTTP_REFERER']) && ((empty($_SERVER['REQUEST_METHOD']) || $_SERVER['REQUEST_METHOD'] !== 'POST'))) { return true; } + + if (!empty($_SERVER['HTTP_REFERER']) && (strpos($_SERVER['HTTP_REFERER'], $site_URL) !== false) && (empty($_SERVER['REQUEST_METHOD']) || $_SERVER['REQUEST_METHOD'] !== 'POST')) { + return true; + } + $valid_ips = explode(',', GlobalVariable::getVariable('Application_CSRF_Valid_IP', '', '', Users::getActiveAdminId())); if (array_key_exists('HTTP_REFERER', $_SERVER)) { $rem_ip = gethostbyname(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST));