From 38302ef58ba1224bf89a6667c8df0802071ea9bd Mon Sep 17 00:00:00 2001 From: Thomas Pointhuber Date: Sun, 1 Feb 2015 10:07:53 +0100 Subject: [PATCH 1/2] [fix] hash error if url is including non ascii characters --- searx/webapp.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/searx/webapp.py b/searx/webapp.py index d612af41..c4eb7d73 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -218,7 +218,7 @@ def image_proxify(url): if not settings['server'].get('image_proxy') and not request.cookies.get('image_proxy'): return url - h = hashlib.sha256(url + settings['server']['secret_key']).hexdigest() + h = hashlib.sha256(url.encode('utf-8') + settings['server']['secret_key'].encode('utf-8')).hexdigest() return '{0}?{1}'.format(url_for('image_proxy'), urlencode(dict(url=url, h=h))) @@ -558,7 +558,7 @@ def image_proxy(): if not url: return '', 400 - h = hashlib.sha256(url + settings['server']['secret_key']).hexdigest() + h = hashlib.sha256(url.encode('utf-8') + settings['server']['secret_key'].encode('utf-8')).hexdigest() if h != request.args.get('h'): return '', 400 From 14079ea2b0ac55273171bc9c2120c883d58d4d2f Mon Sep 17 00:00:00 2001 From: Thomas Pointhuber Date: Sun, 1 Feb 2015 10:18:32 +0100 Subject: [PATCH 2/2] [fix] codec can't encode character inside image_proxify --- searx/webapp.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/searx/webapp.py b/searx/webapp.py index c4eb7d73..d92302b6 100644 --- a/searx/webapp.py +++ b/searx/webapp.py @@ -215,10 +215,12 @@ def image_proxify(url): if url.startswith('//'): url = 'https:' + url + url = url.encode('utf-8') + if not settings['server'].get('image_proxy') and not request.cookies.get('image_proxy'): return url - h = hashlib.sha256(url.encode('utf-8') + settings['server']['secret_key'].encode('utf-8')).hexdigest() + h = hashlib.sha256(url + settings['server']['secret_key'].encode('utf-8')).hexdigest() return '{0}?{1}'.format(url_for('image_proxy'), urlencode(dict(url=url, h=h))) @@ -553,12 +555,12 @@ def preferences(): @app.route('/image_proxy', methods=['GET']) def image_proxy(): - url = request.args.get('url') + url = request.args.get('url').encode('utf-8') if not url: return '', 400 - h = hashlib.sha256(url.encode('utf-8') + settings['server']['secret_key'].encode('utf-8')).hexdigest() + h = hashlib.sha256(url + settings['server']['secret_key'].encode('utf-8')).hexdigest() if h != request.args.get('h'): return '', 400