Experiment: Remove character whitelist for tag names.
I have always felt bad about forbidding unicode in tag names, but I want to make sure I have a grip on sanitization / preventing abuse before allowing it. I think stripping control characters is enough and any abuse can be handled manually. Of course that's all fiction because there are no users except myself.
This commit is contained in:
parent
26b9371f26
commit
39b7f3cd98
3 changed files with 10 additions and 8 deletions
|
@ -291,7 +291,7 @@ DEFAULT_CONFIGURATION = {
|
||||||
'tag': {
|
'tag': {
|
||||||
'min_length': 1,
|
'min_length': 1,
|
||||||
'max_length': 32,
|
'max_length': 32,
|
||||||
'valid_chars': string.ascii_lowercase + string.digits + '_()',
|
# 'valid_chars': string.ascii_lowercase + string.digits + '_()',
|
||||||
},
|
},
|
||||||
|
|
||||||
'user': {
|
'user': {
|
||||||
|
|
|
@ -1206,17 +1206,19 @@ class Tag(ObjectBase, GroupableMixin):
|
||||||
return description
|
return description
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def normalize_name(name, valid_chars=None, min_length=None, max_length=None):
|
def normalize_name(name, min_length=None, max_length=None):
|
||||||
original_name = name
|
original_name = name
|
||||||
if valid_chars is None:
|
# if valid_chars is None:
|
||||||
valid_chars = constants.DEFAULT_CONFIGURATION['tag']['valid_chars']
|
# valid_chars = constants.DEFAULT_CONFIGURATION['tag']['valid_chars']
|
||||||
|
|
||||||
name = name.lower().strip()
|
name = name.lower()
|
||||||
|
name = helpers.remove_control_characters(name)
|
||||||
name = name.strip(' .+')
|
name = name.strip(' .+')
|
||||||
name = name.split('+')[0].split('.')[-1]
|
name = name.split('+')[0].split('.')[-1]
|
||||||
name = name.replace('-', '_')
|
name = name.replace('-', '_')
|
||||||
name = name.replace(' ', '_')
|
name = name.replace(' ', '_')
|
||||||
name = ''.join(c for c in name if c in valid_chars)
|
name = name.replace('=', '')
|
||||||
|
# name = ''.join(c for c in name if c in valid_chars)
|
||||||
|
|
||||||
if min_length is not None and len(name) < min_length:
|
if min_length is not None and len(name) < min_length:
|
||||||
raise exceptions.TagTooShort(original_name)
|
raise exceptions.TagTooShort(original_name)
|
||||||
|
|
|
@ -1192,7 +1192,7 @@ class PDBTagMixin:
|
||||||
def normalize_tagname(self, tagname):
|
def normalize_tagname(self, tagname):
|
||||||
tagname = objects.Tag.normalize_name(
|
tagname = objects.Tag.normalize_name(
|
||||||
tagname,
|
tagname,
|
||||||
valid_chars=self.config['tag']['valid_chars'],
|
# valid_chars=self.config['tag']['valid_chars'],
|
||||||
min_length=self.config['tag']['min_length'],
|
min_length=self.config['tag']['min_length'],
|
||||||
max_length=self.config['tag']['max_length'],
|
max_length=self.config['tag']['max_length'],
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue