mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-09 11:44:10 +09:00
SECISSUE fix #952 로그인 사용자의 session id를 재발급하도록 개선
- 로그인 후, admin 액션 접근 시 session id 재발급
This commit is contained in:
parent
56567bba9e
commit
59960c3b08
4 changed files with 62 additions and 0 deletions
|
|
@ -377,6 +377,22 @@ class ModuleHandler extends Handler
|
||||||
$kind = 'admin';
|
$kind = 'admin';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($kind == 'admin')
|
||||||
|
{
|
||||||
|
$oMemberController = ModuleHandler::getModuleInstance('member', 'controller');
|
||||||
|
$validate_session = $oMemberController->validateSession();
|
||||||
|
$oMemberController->regenerateSession();
|
||||||
|
if(!$validate_session)
|
||||||
|
{
|
||||||
|
$this->error = 'security_invalid_session';
|
||||||
|
$oMessageObject = ModuleHandler::getModuleInstance('message', 'view');
|
||||||
|
$oMessageObject->setError(-1);
|
||||||
|
$oMessageObject->setMessage($this->error);
|
||||||
|
$oMessageObject->dispMessage();
|
||||||
|
return $oMessageObject;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// check REQUEST_METHOD in controller
|
// check REQUEST_METHOD in controller
|
||||||
if($type == 'controller')
|
if($type == 'controller')
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -3717,6 +3717,19 @@
|
||||||
<value xml:lang="mn"><![CDATA[%s-ын хэлбэр буруу байна. Зөвхөн тоогоор оруулах ёстой.]]></value>
|
<value xml:lang="mn"><![CDATA[%s-ын хэлбэр буруу байна. Зөвхөн тоогоор оруулах ёстой.]]></value>
|
||||||
</item>
|
</item>
|
||||||
</item>
|
</item>
|
||||||
|
<item name="security_invalid_session">
|
||||||
|
<value xml:lang="ko"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||||
|
<value xml:lang="en"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||||
|
<value xml:lang="jp"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||||
|
<value xml:lang="zh-CN"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||||
|
<value xml:lang="zh-TW"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||||
|
<value xml:lang="fr"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||||
|
<value xml:lang="de"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||||
|
<value xml:lang="es"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||||
|
<value xml:lang="tr"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||||
|
<value xml:lang="vi"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||||
|
<value xml:lang="mn"><![CDATA[바르지 않은 접근입니다. 인증을 위해 다시 로그인해야 합니다.]]></value>
|
||||||
|
</item>
|
||||||
<item name="security_warning_embed">
|
<item name="security_warning_embed">
|
||||||
<value xml:lang="ko"><![CDATA[보안 문제로 관리자 아이디로는 embed를 볼 수 없습니다. 확인하려면 다른 아이디로 접속하세요]]></value>
|
<value xml:lang="ko"><![CDATA[보안 문제로 관리자 아이디로는 embed를 볼 수 없습니다. 확인하려면 다른 아이디로 접속하세요]]></value>
|
||||||
<value xml:lang="en"><![CDATA[Due to security concern, administrators are not allowed to view embedded items.<BR /> To view them, please use another non-administrator ID.]]></value>
|
<value xml:lang="en"><![CDATA[Due to security concern, administrators are not allowed to view embedded items.<BR /> To view them, please use another non-administrator ID.]]></value>
|
||||||
|
|
|
||||||
|
|
@ -1809,6 +1809,8 @@ class memberController extends member
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$_SESSION['session_checkup'] = null;
|
||||||
|
$this->regenerateSession();
|
||||||
$this->setSessionInfo();
|
$this->setSessionInfo();
|
||||||
|
|
||||||
return $output;
|
return $output;
|
||||||
|
|
@ -1868,6 +1870,31 @@ class memberController extends member
|
||||||
$this->addMemberMenu( 'dispMemberOwnDocument', 'cmd_view_own_document');
|
$this->addMemberMenu( 'dispMemberOwnDocument', 'cmd_view_own_document');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function validateSession()
|
||||||
|
{
|
||||||
|
$destory_session = false;
|
||||||
|
|
||||||
|
if($_SESSION['ipaddress'] != $_SERVER['REMOTE_ADDR']) $destory_session = true;
|
||||||
|
|
||||||
|
if($destory_session)
|
||||||
|
{
|
||||||
|
$this->destroySessionInfo();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function regenerateSession()
|
||||||
|
{
|
||||||
|
if(!$_SESSION['session_checkup'] || time() - $_SESSION['session_checkup'] > 30)
|
||||||
|
{
|
||||||
|
session_regenerate_id(true);
|
||||||
|
$_SESSION['session_checkup'] = time();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logged method for providing a personalized menu
|
* Logged method for providing a personalized menu
|
||||||
* Login information is used in the output widget, or personalized page
|
* Login information is used in the output widget, or personalized page
|
||||||
|
|
|
||||||
|
|
@ -234,6 +234,12 @@ class memberModel extends member
|
||||||
}
|
}
|
||||||
Context::set('logged_info', $logged_info);
|
Context::set('logged_info', $logged_info);
|
||||||
|
|
||||||
|
if($logged_info->is_admin == 'Y' || $logged_info->is_site_admin)
|
||||||
|
{
|
||||||
|
$oMemberController = getController('member');
|
||||||
|
$oMemberController->regenerateSession();
|
||||||
|
}
|
||||||
|
|
||||||
return $logged_info;
|
return $logged_info;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue