mirror of
https://github.com/donlon/cloudflare-error-page.git
synced 2025-12-19 14:59:28 +00:00
editor/server: escape user provided link if insecure
This commit is contained in:
@@ -24,7 +24,7 @@ from . import (
|
|||||||
models
|
models
|
||||||
)
|
)
|
||||||
|
|
||||||
from .utils import fill_cf_template_params
|
from .utils import fill_cf_template_params, sanitize_page_param_links
|
||||||
|
|
||||||
# root_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), '../../')
|
# root_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), '../../')
|
||||||
# examples_dir = os.path.join(root_dir, 'examples')
|
# examples_dir = os.path.join(root_dir, 'examples')
|
||||||
@@ -120,6 +120,7 @@ def get(name: str):
|
|||||||
params['what_can_i_do'] = html.escape(params.get('what_can_i_do', ''))
|
params['what_can_i_do'] = html.escape(params.get('what_can_i_do', ''))
|
||||||
fill_cf_template_params(params)
|
fill_cf_template_params(params)
|
||||||
fill_template_params(params)
|
fill_template_params(params)
|
||||||
|
sanitize_page_param_links(params)
|
||||||
|
|
||||||
return template.render(base=cf_template,
|
return template.render(base=cf_template,
|
||||||
params=params,
|
params=params,
|
||||||
|
|||||||
@@ -48,3 +48,26 @@ def fill_cf_template_params(params: dict):
|
|||||||
if not client_ip:
|
if not client_ip:
|
||||||
client_ip = request.remote_addr
|
client_ip = request.remote_addr
|
||||||
params['client_ip'] = client_ip
|
params['client_ip'] = client_ip
|
||||||
|
|
||||||
|
|
||||||
|
def sanitize_user_link(link: str):
|
||||||
|
link = link.strip()
|
||||||
|
link_lower = link
|
||||||
|
if link_lower.startswith('http://') or link_lower.startswith('https://'):
|
||||||
|
return link
|
||||||
|
if '.' in link or '/' in link:
|
||||||
|
return 'https://' + link
|
||||||
|
return '#' + link
|
||||||
|
|
||||||
|
|
||||||
|
def sanitize_page_param_links(param: dict):
|
||||||
|
more_info = param.get('more_information')
|
||||||
|
if more_info:
|
||||||
|
link = more_info.get('link')
|
||||||
|
if link:
|
||||||
|
more_info['link'] = sanitize_user_link(link)
|
||||||
|
perf_sec_by = param.get('perf_sec_by')
|
||||||
|
if perf_sec_by:
|
||||||
|
link = perf_sec_by.get('link')
|
||||||
|
if link:
|
||||||
|
perf_sec_by['link'] = sanitize_user_link(link)
|
||||||
|
|||||||
Reference in New Issue
Block a user