diff options
author | Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> | 2020-01-22 15:52:46 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-22 15:52:46 +0000 |
commit | 0cc2594966b05dff1594d993b38c6a5d1ca0d2ce (patch) | |
tree | 4031166c9d63d48ec748cb13065021d020c09c58 /synapse/util/stringutils.py | |
parent | Add the ability to restrict max avatar filesize and content-type (#19) (diff) | |
download | synapse-0cc2594966b05dff1594d993b38c6a5d1ca0d2ce.tar.xz |
Validate client_secret parameter according to spec (#20)
Diffstat (limited to '')
-rw-r--r-- | synapse/util/stringutils.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/synapse/util/stringutils.py b/synapse/util/stringutils.py index 69dffd8244..5fb18ee1f8 100644 --- a/synapse/util/stringutils.py +++ b/synapse/util/stringutils.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- # Copyright 2014-2016 OpenMarket Ltd +# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,12 +15,15 @@ # limitations under the License. import random +import re import string import six from six import PY2, PY3 from six.moves import range +from synapse.api.errors import Codes, SynapseError + _string_with_symbols = ( string.digits + string.ascii_letters + ".,;:^&*-_+=#~@" ) @@ -29,6 +33,8 @@ _string_with_symbols = ( # we get cryptographically-secure randoms. rand = random.SystemRandom() +client_secret_regex = re.compile(r"^[0-9a-zA-Z.=_-]+$") + def random_string(length): return ''.join(rand.choice(string.ascii_letters) for _ in range(length)) @@ -113,3 +119,11 @@ def exception_to_unicode(e): return msg.decode('utf-8', errors='replace') else: return msg + + +def assert_valid_client_secret(client_secret): + """Validate that a given string matches the client_secret regex defined by the spec""" + if client_secret_regex.match(client_secret) is None: + raise SynapseError( + 400, "Invalid client_secret parameter", errcode=Codes.INVALID_PARAM + ) |