mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-07 02:31:40 +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';
|
||||
}
|
||||
|
||||
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
|
||||
if($type == 'controller')
|
||||
{
|
||||
|
|
|
|||
|
|
@ -3717,6 +3717,19 @@
|
|||
<value xml:lang="mn"><![CDATA[%s-ын хэлбэр буруу байна. Зөвхөн тоогоор оруулах ёстой.]]></value>
|
||||
</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">
|
||||
<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>
|
||||
|
|
|
|||
|
|
@ -1809,6 +1809,8 @@ class memberController extends member
|
|||
}
|
||||
}
|
||||
|
||||
$_SESSION['session_checkup'] = null;
|
||||
$this->regenerateSession();
|
||||
$this->setSessionInfo();
|
||||
|
||||
return $output;
|
||||
|
|
@ -1868,6 +1870,31 @@ class memberController extends member
|
|||
$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
|
||||
* 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);
|
||||
|
||||
if($logged_info->is_admin == 'Y' || $logged_info->is_site_admin)
|
||||
{
|
||||
$oMemberController = getController('member');
|
||||
$oMemberController->regenerateSession();
|
||||
}
|
||||
|
||||
return $logged_info;
|
||||
}
|
||||
return NULL;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue