[KVE-2025-0191] Stored XSS (bypass html_purify via Open Redirect) 취약점 수정
This commit is contained in:
@ -685,6 +685,10 @@ function html_purifier($html)
|
||||
)
|
||||
);
|
||||
|
||||
// 커스텀 URI 필터 등록
|
||||
$def = $config->getDefinition('URI', true); // URI 정의 가져오기
|
||||
$def->addFilter(new HTMLPurifierContinueParamFilter(), $config); // 커스텀 필터 추가
|
||||
|
||||
$purifier = new HTMLPurifier($config);
|
||||
|
||||
return run_replace('html_purifier_result', $purifier->purify($html), $purifier, $html);
|
||||
|
||||
@ -77,4 +77,30 @@ if( !class_exists('HTMLPurifier_Filter_Iframevideo') ){
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( !class_exists('HTMLPurifierContinueParamFilter') ){
|
||||
class HTMLPurifierContinueParamFilter extends HTMLPurifier_URIFilter
|
||||
{
|
||||
public $name = 'ContinueParamFilter';
|
||||
|
||||
public function filter(&$uri, $config, $context)
|
||||
{
|
||||
// 쿼리 파라미터 검사
|
||||
$query = $uri->query;
|
||||
$path = $uri->path;
|
||||
|
||||
if ($path && preg_match('#[\\\\/]logout#i', $path)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($query) {
|
||||
if (isset($query_params['continue'])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true; // 조건 통과 시 허용
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user