diff --git a/superset/key_value/shared_entries.py b/superset/key_value/shared_entries.py index c2acafa80..21a41b560 100644 --- a/superset/key_value/shared_entries.py +++ b/superset/key_value/shared_entries.py @@ -42,6 +42,7 @@ def set_shared_value(key: SharedKey, value: Any) -> None: def get_permalink_salt(key: SharedKey) -> str: salt = get_shared_value(key) if salt is None: - salt = random_key() + # Use a 48 bytes salt + salt = random_key(48) set_shared_value(key, value=salt) return salt diff --git a/superset/key_value/utils.py b/superset/key_value/utils.py index e0ccbd1f5..e7be47311 100644 --- a/superset/key_value/utils.py +++ b/superset/key_value/utils.py @@ -31,8 +31,14 @@ from superset.utils.json import json_dumps_w_dates HASHIDS_MIN_LENGTH = 11 -def random_key() -> str: - return token_urlsafe(48) +def random_key(nbytes: int = 8) -> str: + """ + Generate a random URL-safe string. + + Args: + nbytes (int): Number of bytes to use for generating the key. Default is 8. + """ + return token_urlsafe(nbytes) def get_filter(resource: KeyValueResource, key: Key) -> KeyValueFilter: