remove cgi.escape and simplify input sanitization

Escaping is done in Jade templates (by default).
pull/108/head
Martin Zimmermann 10 years ago
parent fc2cc0c65f
commit bd1cb498d1

@ -2,8 +2,6 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import cgi
from functools import partial from functools import partial
from itsdangerous import SignatureExpired, BadSignature from itsdangerous import SignatureExpired, BadSignature
@ -100,24 +98,24 @@ class API(object):
return obj return obj
@xhr @classmethod
@requires(str, 'uri') def sanitize(cls, data):
def new(self, environ, request, uri):
data = request.get_json()
if not isinstance(data, dict): if not isinstance(data, dict):
raise BadRequest(400, "request data is not an object") raise BadRequest(400, "request data is not an object")
for field in set(data.keys()) - API.ACCEPT: for field in set(data.keys()) - API.ACCEPT:
data.pop(field) data.pop(field)
for field in ("author", "email", "website"):
if isinstance(data.get(field, None), string_types):
data[field] = cgi.escape(data[field])
if isinstance(data.get("website", None), string_types): if isinstance(data.get("website", None), string_types):
data["website"] = normalize(data["website"]) data["website"] = normalize(data["website"])
return data
@xhr
@requires(str, 'uri')
def new(self, environ, request, uri):
data = API.sanitize(request.get_json())
remote_addr = utils.anonymize(str(request.remote_addr)) remote_addr = utils.anonymize(str(request.remote_addr))
with self.db.transaction: with self.db.transaction:
@ -174,7 +172,7 @@ class API(object):
if rv[1] != sha1(comment.text): if rv[1] != sha1(comment.text):
raise Forbidden raise Forbidden
data = request.get_json() data = API.sanitize(request.get_json())
if not isinstance(data, dict): if not isinstance(data, dict):
raise BadRequest(400, "request data is not an object") raise BadRequest(400, "request data is not an object")

Loading…
Cancel
Save