X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fmodules%2Floader.php;h=e154a9395b23bb9a815e37247502dd697fc87871;hb=04040e55c05a59a028101ee3afb04721d08cfc0f;hp=294abf4d8378cc648e75c5e468b277f433d4626d;hpb=63f159414369b5ea19a8ca75d8cd8033c45d8341;p=mailer.git diff --git a/inc/modules/loader.php b/inc/modules/loader.php index 294abf4d83..e154a9395b 100644 --- a/inc/modules/loader.php +++ b/inc/modules/loader.php @@ -41,19 +41,40 @@ if (!defined('__SECURITY')) { } // END - if // Is an URL specified? -if (isGetRequestElementSet('url')) { +if ((isGetRequestElementSet('url')) && (isGetRequestElementSet('hash')) && (isGetRequestElementSet('salt'))) { // Decode URL - $url = decodeString(str_replace(' ', '+', compileUriCode(urldecode(getRequestElement('url'))))); + $decodedUrl = decodeString(str_replace(' ', '+', compileUriCode(urldecode(getRequestElement('url'))))); - // Validate the URL - if (isUrlValid($url)) { + // Debug message + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'decodedUrl=' . $decodedUrl . ',hash=' . getRequestElement('hash')); + + // Generate hash for comparing it + $hash = encodeHashForCookie(generateHash($decodedUrl . getSiteKey() . getDateKey(), getRequestElement('salt'))); + + // Debug message + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'decodedUrl=' . $decodedUrl . ',hash=' . $hash); + + // Validate the URL and hash + if ($hash != getRequestElement('hash')) { + // Hash doesn't match + displayMessage('{--LOADER_SECURITY_HASH_MISMATCH--}'); + + // Log this event + logDebugMessage(__FILE__, __LINE__, 'Hash ' . getRequestElement('hash') . ' does not match URL ' . $decodedUrl); + } elseif (isUrlValid($decodedUrl)) { // Generate a JavaScript that redirects us - loadTemplate('loader', false, $url); + loadTemplate('loader', FALSE, $decodedUrl); } else { // URL invalid redirectToUrl('modules.php?module=index'); } } else { + // Is the hash not provided? + if (!isGetRequestElementSet('hash')) { + // Very old (external!) call + logDebugMessage(__FUNCTION__, __LINE__, 'Possible old call on loader.php detected. Redirecting to index.php anyway ...'); + } // END - if + // Invalid or no URL entered! redirectToUrl('modules.php?module=index'); }