diff options
author | M.Gergo | 2019-03-08 21:20:34 +0100 |
---|---|---|
committer | M.Gergo | 2019-03-08 21:20:34 +0100 |
commit | f51c9ed2abe5c68211bb3736be5f70b1fe2c9ec0 (patch) | |
tree | e13e60e4b94a3b58f1e2bfbe271102c8f04b67bd /mayor-orig/www/include/base/rights.php | |
parent | c76a004b0135786f2742283f8d5f917106f58bd8 (diff) | |
download | mayor-f51c9ed2abe5c68211bb3736be5f70b1fe2c9ec0.tar.gz mayor-f51c9ed2abe5c68211bb3736be5f70b1fe2c9ec0.zip |
további rendrakás
Diffstat (limited to 'mayor-orig/www/include/base/rights.php')
-rw-r--r-- | mayor-orig/www/include/base/rights.php | 397 |
1 files changed, 0 insertions, 397 deletions
diff --git a/mayor-orig/www/include/base/rights.php b/mayor-orig/www/include/base/rights.php deleted file mode 100644 index dc6b7aa7..00000000 --- a/mayor-orig/www/include/base/rights.php +++ /dev/null @@ -1,397 +0,0 @@ -<?php - -// --TODO-- ez nem ide való! -require_once('include/modules/auth/base/token.php'); - - -/* - Module: base - - validUser($sessionID,$policy,$skin='',$lang='') - - - ellenőrizzük a $page, $sub, $f formai helyességét - - validUser - ellenőrzi, hogy be vagyunk-e jelentkezve, beállítja a konstansokst, ha kell elküld az auth oldalra - - validUser esetén a session kezelő fv-ek csatolása (backend függő) - - a module, psf include fájlainak és a pre fájlnak a csatolása - - A validUser fv két funkciót lát el egyszerre (ellenőriz, és konstans beállít). - A konstansokat (pl. _SESSIONID) csak az aktuális policy-re állítjuk, a toPolicyra nem. - A validUser figyelembe veszi a _SESSION_MAX_IDLE_TIME konstans értékét: ha az activity+_SESSION_MAX_IDLE_TIME már elmúlt - akkor elutasít, - különben az aktivity értékét frissíti. - - a '_POLICY'-t a base.php-ben definiáljuk. - -*/ -function sessionHash($algo='ripemd160', $hashThis='') -{ - if ($hashThis=='') $hashThis = uniqid(rand(), true); - if (!in_array($algo,hash_algos())) $algo = 'sha1'; - $sessionID = substr( hash($algo, $hashThis), 0, 40 ); // 40: sha1, ripem160 - return $sessionID; -} - -if(!function_exists('hash_equals')) { // lásd még str - function hash_equals($str1, $str2) { - if(strlen($str1) != strlen($str2)) { - return false; - } else { - $res = $str1 ^ $str2; - $ret = 0; - for($i = strlen($res) - 1; $i >= 0; $i--) $ret |= ord($res[$i]); - return !$ret; - } - } -} - - -function sessionCookieEncode($sessionID,$now,$extra='') -{ - if ($extra=='') $extra = uniqid(rand(), true); - $extraHash=sessionHash('ripemd160',$extra); - $pwHash = sessionHash('ripemd160',uniqid(rand(), true)); - $value = base64_encode(strtotime($now).'g'.$extraHash.'g'.$pwHash); - return array('name'=>($sessionID), 'value'=>$value, 'store'=> $extraHash, 'pwHash'=>$pwHash); -} - -function sessionCookieDecode($sessionID) -{ - return explode('g',base64_decode($_COOKIE[($sessionID)])); -} - -function pseudoTokenGenerator() { - - if (function_exists('openssl_random_pseudo_bytes')) - $token = bin2hex(openssl_random_pseudo_bytes(32)); - else - $token = bin2hex(sessionHash()); - return $token; -} - -###################################################################### -# Azonosított user ellenőrzése a session tábla alapján -###################################################################### - -function validUser($sessionID,$policy,$skin='',$lang='') { - global $page; - if (_RUNLEVEL === 'cron') { - define('_USERPASSWORD','MaYoR-cron'); - define('_USERACCOUNT','MaYoR-cron'); - define('_USERCN','MaYoR-cron User'); - define('_STUDYID',''); - define('_LANG',$lang); - define('_SESSIONID','cron'); - return true; - } - -// if ($sessionID == '' || $MAYORAPIAUTH['valid']!==true) { - if ($sessionID == '') { - $MAYORAPIAUTH = mayorApiAuth(); // van-e hosszulejáratu session-je - if ($policy == _POLICY && $MAYORAPIAUTH['valid']!==true) { - define('_USERPASSWORD',''); - define('_USERACCOUNT',''); - define('_USERCN',''); - define('_STUDYID',''); - define('_LANG',$lang); - define('_SESSIONID',''); - } - return false; - } else { - - $lr = db_connect('login', array('fv' => 'validUser')); - - if ($lr === false) die('A keretrendeszer adatbázisa nem érhető el! (validUser)'); - // ha nem tudta beállítani a sütit, akkor az $_sc üres lesz így a dt feltétel 1970-01-01, ami nem gond. - list($_sessionDt,$_sessionCookie,$_sessionPwHash) = sessionCookieDecode($sessionID); - $query = "SELECT userAccount, userCn, studyId, aes_decrypt(userPassword, '%s'), skin, lang, activity, dt - FROM session WHERE sessionID='%s' AND policy='%s'"; // [SECURITY-002] quickfix from marton.drotos@sztaki.hu - - if (defined('_SESSION_MAX_IDLE_TIME') and _SESSION_MAX_IDLE_TIME != 0) $query .= " AND activity + INTERVAL "._SESSION_MAX_IDLE_TIME." HOUR > NOW()"; - - $query .= " AND dt='".date('Y-m-d H:i:s', (($_sessionDt=="")?null:$_sessionDt) )."'"; - $query .= " AND sessionCookie='%s'"; - - $ret = db_query($query, array('fv' => 'validUser', 'modul' => 'login', 'result' => 'indexed', 'values' => array($_sessionPwHash, $sessionID, $policy, $_sessionCookie)), $lr); - $num = count($ret); - $sessionMode = 1; - - // ha nincs találat, nézzük meg, van-e a kliensnek hosszú lejáratú tokenje, kivéve, ha ... - if ($num !== 1 && $page!='password') { - $MAYORAPIAUTH = mayorApiAuth(); - if ($MAYORAPIAUTH['valid'] === true) { - global $sessionMode; - $sessionMode = 2; - // reauth AS: - $toPolicy = $MAYORAPIAUTH['policy']; - $userAccount = $MAYORAPIAUTH['userAccount']; - $userCn = $MAYORAPIAUTH['userCn']; - $studyId = $MAYORAPIAUTH['studyId']; - $userPassword = ''; - $lang = _DEFAULT_LANG; - } else { - unsetTokenCookies(); - } - } // --token vizsgálat vége - - if ($num == 1) { - - if ($sessionMode == 1) list($userAccount, $userCn, $studyId, $userPassword, $savedSkin, $lang, $activity, $dt) = array_values($ret[0]); - global $SKINS; - if (_USER_AGENT!=='ppc' && @in_array($savedSkin,$SKINS) ) $skin=$savedSkin; - if ($policy == _POLICY) { - define('_USERACCOUNT',$userAccount); - define('_USERCN',$userCn); - define('_STUDYID',$studyId); - define('_USERPASSWORD',$userPassword); -// define('_SKIN',$skin); - define('_LANG',$lang); - define('_SESSIONID',$sessionID); - } - - // Aktivitás figyelése! // hopp, nem biztos, hogy van session! - $query = "UPDATE session SET activity = NOW() WHERE sessionID = '%s'"; - db_query($query, array('fv' => 'validUser', 'modul' => 'login', 'values' => array($sessionID)), $lr); - db_close($lr); - return true; - - } else { - - if ($policy == _POLICY) { - define('_USERPASSWORD',''); - define('_USERACCOUNT',''); - define('_USERCN',''); - define('_STUDYID',''); -// define('_SKIN',$skin); - define('_LANG',$lang); - define('_SESSIONID',''); - } - db_close($lr); - if ($num > 1) $_SESSION['alert'][] = 'message:multi_session'; - if ($_sessionDt==="") define('_NOCOOKIE',true); // beállítjuk, hogy üzenni tudjunk - - return false; - - } - - } - -} - -//=================================================================================================================================== -// ------------------------------------------ -// debug üzenetek tárolása - a $_DEBUG változóba kerül midnen -// ------------------------------------------ - if (_RUNLEVEL!=='cron') ob_start(); - -// ------------------------------------------ -// a $page, $sub és $f csak a-z betűvel kezdődhet, utána pedig csak (a-z, /_-). $page és $f nem lehet üres -// ------------------------------------------ - - if ( - (preg_match('#^([a-z]|[A-Z])([0-9]|[a-z]|[A-Z]|/|_|-)*$#', $page) == false) OR - ($sub != '' AND preg_match('#^([a-z]|[A-Z])([0-9]|[a-z]|[A-Z]|/|_|-)*$#', $sub) == false) OR - (preg_match('#^([0-9]|[a-z]|[A-Z]|_|-)*$#', $f) == false) - ) { - $_SESSION['alert'][] = 'page:wrong_page:'; - $RIGHTS_OK = false; - } else { - $RIGHTS_OK = true; - } - -// ------------------------------------------ -// Security Check: $policy szerinti ellenőrzés -// ------------------------------------------ - - // A validUser (session.php) beállítja az alapvető session konstansokat is - if ( !validUser($sessionID,$policy,$skin,$lang) ) { - if ($AUTH[$policy]['authentication'] == 'required') { - if (defined('_NOCOOKIE')) $_SESSION['alert'][] = 'message:cookie';//$extendAlert='alert[]=message:cookie&'; - $_SESSION['alert'][]='message:auth_failure:'._CONTROL_FLAG_REQUIRED; - header('Location: index.php?policy=public&page=auth&f=login&toPolicy='.$policy."&toPSF=$page:$sub:$f&sessionID=$sessionID"); - die(); - } else { - // Hibás, vagy nem létező sessionID esetének kezelése - ha nem kötelező a sessionID --> nem csinálunk semmit (lehet egy másik policy-ben valid - } - - } - if (file_exists('include/share/session/base.php')) { - // A session kezeléshez szükséges backend függő függvények pl. memberOf - require('include/share/session/base.php'); - - } - // Remote Protocol Call (MaYoR) - if ($skin=='rpc') { - define('_RPC',true); - require_once('include/share/ssl/ssl.php'); - try - { - $_RPC['senderNodeId'] = $senderNodeId = readVariable($_POST['senderNodeId'],'strictstring',0); - $RPC = new Interconnect(); - $RPC->setRequestTarget('controller'); // A remoteHost lekérdezéshez kellhet - $RPC->setRemoteHostByNodeId($_RPC['senderNodeId']); - $RPC->processRequest(); // vélhetően van request - $_RPC['request'] = $RPC->getIncomingRequest(); - } - catch (Exception $e) - { - //$func=''; - //$DATA = array('error'=>$e->getMessage()); - } - } else { define('_RPC',false); } - // Interconnect end - - define('_RIGHTS_OK',$RIGHTS_OK); - - /* XSRF2 */ - define('__SALTNAME','MS_'.sha1($page.'_'.$sub.'_'.$f)); - define('__SALTVALUE',sessionHash()); - // mtoken - if (empty($_SESSION['mayorToken'])) { - $_SESSION['mayorToken'] = pseudoTokenGenerator(); - } - if (count($_POST)>0) { - if (!empty($_POST['mayorToken'])) { - if (hash_equals($_SESSION['mayorToken'], $_POST['mayorToken'])) { - // OK, token regenerálás + visszakuldjuk az ETAG-ben - $_SESSION['mayorToken'] = pseudoTokenGenerator(); - } else { - if ($_POST['action']!='') { /* Ha nincs action formváltozó, nincs szükség hibaüzenetre, a form nem módosít, de most... */ - $_SESSION['alert'][] = 'message:not_valid_form:pnu2'; - $_JSON['result'] = false; - } - unset($_POST['action']); - unset($action); - } - } else { // klasszikus ellenőrzés, fallback - echo 'FATAL ERROR 696'; - die(); - /* - // $_JSON['result'] = false; // ITT gátolhatjuk a működést - if ($_COOKIE[__SALTNAME]=='') { // a session átállásig - ez semmitől nem véd, adott nevű sütit generálni bárki tud - $_SESSION['alert'][] = 'message:not_valid_form:no cookie'.$_SESSION[__SALTNAME]; - $_JSON['result'] = false; - unset($_POST['action']); - unset($action); - } elseif (!is_null($_COOKIE[__SALTNAME]) && ($_COOKIE[__SALTNAME] == $_POST[__SALTNAME])) { - // rendben - } else { - if ($_POST['action']!='') { // Ha nincs action formváltozó, nincs szükség hibaüzenetre, a form nem módosít - $_SESSION['alert'][] = 'message:not_valid_form'; - $_JSON['result'] = false; - } - unset($_POST['action']); - unset($action); - } - */ - } // END DEPRECATED BLOCK - } - // eredeti post kezelés + ETAG prevent cache - if (($_SERVER['HTTPS']!=='on') || (isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER']!='' && substr($_SERVER['HTTP_REFERER'],4,1)!=='s')) $_ssl = false; else $_ssl=true; - -//4400 if (@setcookie('xxxDEPRECATEDxxx_'.__SALTNAME,__SALTVALUE,time()+60*60*_SESSION_MAX_IDLE_TIME,'/','',$_ssl, true) == false) { -//4400 $_SESSION['alert'][] = 'message:no_cookie:unabletoset'; -//4400 } - - - /* /XSRF2 previous revision: r4138 */ - - // betöltjük az össes config-ot... (lásd még widgets) - try { - $_dirlist = scandir(_CONFIGDIR); - for ($i=0; $i<count($_dirlist); $i++) { - $_dir = $_dirlist[$i]; - if (is_dir(_CONFIGDIR.'/'.$_dir) && substr($_dir,0,7)=='module-') { - $_configFile = _CONFIGDIR . "/".$_dir.'/config.php'; - list($_rest,$_module) = explode('-',$_dir); - if (in_array($_module,$VALID_MODULES)) { - $_loadModule[] = $_module; - if (file_exists($_configFile)) { - require_once($_configFile); - } - } - } - } - } catch (Exception $e) { - $_SESSION['alert'][] = 'info:config hiba:'.$e->getMessage(); - } - // ha betöltenénk az ÖSSZES modul include-jait, akkor be kéne mindent tölteni kb. ugyhogy ezt hagyjuk - if ($dh_all = @opendir("include/widgets/")) { - $includes = array(); - while (($_file = readdir($dh_all)) !== false) { - if (substr($_file,-4) == '.php') $includes[] = $_file; - } - closedir($dh_all); - sort($includes); - for ($i = 0; $i < count($includes); $i++) { - require_once("include/widgets/".$includes[$i]); - } - } - unset($file); - /* ---- */ - if (!in_array($page,$_loadModule)) $_loadModule[] = $page; - for ($i=0; $i<count($_loadModule); $i++) { - $_module = $_loadModule[$i]; - if (in_array($_module,$VALID_MODULES)) { - if ($dh = @opendir("include/modules/$_module/base")) { - $includes = array(); - while (($file = readdir($dh)) !== false) { - if (substr($file,-4) == '.php') $includes[] = $file; - } - closedir($dh); - sort($includes); - for ($j = 0; $j < count($includes); $j++) { - require_once("include/modules/$_module/base/".$includes[$j]); - } - } - } - } - unset($file); - /* ---- */ - - - $skinFile = _CONFIGDIR."/skin-$skin/$page-config.php"; - if ($sub == '') { - $includeFile = "include/modules/$page/$f.php"; - $preFile = "policy/$policy/$page/$f-pre.php"; - $pageFile = "policy/$policy/$page/$f.php"; - $staticFile = "static/$lang/$page/$f.html"; - } else { - $includeFile = "include/modules/$page/$sub/$f.php"; - $preFile = "policy/$policy/$page/$sub/$f-pre.php"; - $pageFile = "policy/$policy/$page/$sub/$f.php"; - $staticFile = "static/$lang/$page/$sub/$f.html"; - } - if (!file_exists($preFile) && !file_exists($pageFile) && !file_exists($staticFile)) - $_SESSION['alert'][] = 'page:page_missing:'.$page.'-'.$sub.'-'.$f; - /* DEFAULTS zcheck() */ - if (defined('_ENABLE_IFRAME_EMBEDING')) - define('_ENABLE_IFRAME_EMBEDDING',_ENABLE_IFRAME_EMBEDING); - elseif (!defined('_ENABLE_IFRAME_EMBEDDING')) - define('_ENABLE_IFRAME_EMBEDDING',false); - - if (!defined('__MAX_MENU')) define('__MAX_MENU',7); - - if (!defined('__SUPPORT_EMAIL_ADDRESS')) { - if (!defined('__EMAIL_ENABLED')) define('__EMAIL_ENABLED',false); - } elseif (!defined('__SUPPORT_EMAIL_NAME')) { - define('__SUPPORT_EMAIL_NAME',_SITE.' support'); - if (!defined('__EMAIL_ENABLED')) define('__EMAIL_ENABLED',true); - } else { - if (!defined('__EMAIL_ENABLED')) define('__EMAIL_ENABLED',true); - } - // --------- - //Breadcrumb - if (count($_SESSION['breadcrumb'])>10) array_shift($_SESSION['breadcrumb']); - $_SESSION['breadcrumb'][] = array('page'=>"$page",'sub'=>"$sub",'f'=>"$f"); - // --------- - if (file_exists($includeFile)) require($includeFile); - if (file_exists($skinFile)) require($skinFile); - if (file_exists($preFile)) include($preFile); - -// --------------------------------------- -// debug üzenetek tárolásának vége -// --------------------------------------- - $_DEBUG = ob_get_contents(); - ob_end_clean(); - - -?>
\ No newline at end of file |