From d0bf454f905355b10961d2925397c58e0f85eff9 Mon Sep 17 00:00:00 2001 From: Mohamed Abdallah Shibe Date: Fri, 12 Aug 2022 23:36:26 +0300 Subject: [PATCH] fix(csrfmagic) fix bypass csrf multiple end point --- include/csrfmagic/csrf-magic.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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));