我正在Python(和Flask)中创建一个web应用程序,用户可以使用他们想要的用户名进行注册。我想在/ user /上显示他们的个人资料,并在服务器上为每个用户创建一个目录。
确保用户名对于网址和目录都是安全的最佳方法是什么?我在base64中读到了使用urlsafe方法的人,但是我希望有一个与其用户名相关的字符串,以便于识别。
答案 0 :(得分:1)
此类URL安全值的通用术语是"slug",生成一个的过程称为“slugification”或“to slugify”。人们通常使用正则表达式来这样做;这里有一个(来自this article on the subject),只使用stdlib模块:
import re
from unicodedata import normalize
_punct_re = re.compile(r'[\t !"#$%&\'()*\-/<=>?@\[\\\]^_`{|},.]+')
def slugify(text, delim=u'-'):
"""Generates an slightly worse ASCII-only slug."""
result = []
for word in _punct_re.split(text.lower()):
word = normalize('NFKD', word).encode('ascii', 'ignore')
if word:
result.append(word)
return unicode(delim.join(result))
链接文章还有另外两个需要额外模块的替代方案。