fix #1181 한글 도메인 처리 개선

- default URL을 IDN으로 지정 시 punycode로 변환하여 저장
- request_uri 및 current_url를 punycode로 변환하지 않은 IDN으로 출력하도록 변경
- String.prototype.setQuery()에서 IDN을 인코딩하지 않도록 변경 thanks to @andjfrrk
This commit is contained in:
bnu 2015-03-05 16:27:47 +09:00
parent da1b59e3e8
commit d6a898a7f2
4 changed files with 40 additions and 11 deletions

View file

@ -1564,22 +1564,25 @@ function checkCSRF()
return FALSE;
}
$defaultUrl = Context::getDefaultUrl();
$referer = parse_url($_SERVER["HTTP_REFERER"]);
$default_url = Context::getDefaultUrl();
$referer = $_SERVER["HTTP_REFERER"];
if(strpos(Context::getRequestUri(), 'xn--') !== FALSE)
if(strpos($default_url, 'xn--') !== FALSE && strpos($referer, 'xn--') === FALSE)
{
require_once(_XE_PATH_ . 'libs/idna_convert/idna_convert.class.php');
$IDN = new idna_convert(array('idn_version' => 2008));
$referer = parse_url($IDN->encode($_SERVER["HTTP_REFERER"]));
$referer = $IDN->encode($referer);
}
$default_url = parse_url($default_url);
$referer = parse_url($referer);
$oModuleModel = getModel('module');
$siteModuleInfo = $oModuleModel->getDefaultMid();
if($siteModuleInfo->site_srl == 0)
{
if(!strstr(strtolower($defaultUrl), strtolower($referer['host'])))
if($default_url['host'] !== $referer['host'])
{
return FALSE;
}