1
我正在Python(和Flask)中創建一個Web應用程序,用戶可以在其中註冊他們想要的用戶名。我想在/ user /上顯示他們的配置文件,併爲每個用戶在服務器上有一個目錄。Webapp用戶名安全
確保用戶名對於URL和目錄都是安全的最好方法是什麼?我閱讀了有關在base64中使用urlsafe方法的人,但我想要一個與他們的用戶名相關的字符串,以便於識別。
我正在Python(和Flask)中創建一個Web應用程序,用戶可以在其中註冊他們想要的用戶名。我想在/ user /上顯示他們的配置文件,併爲每個用戶在服務器上有一個目錄。Webapp用戶名安全
確保用戶名對於URL和目錄都是安全的最好方法是什麼?我閱讀了有關在base64中使用urlsafe方法的人,但我想要一個與他們的用戶名相關的字符串,以便於識別。
此類URL安全值的通用術語是"slug",生成一個的過程稱爲「slugification」或「slugify」。人們通常使用正則表達式來這樣做;這裏是一個(從this article on the subject來源),僅使用STDLIB模塊:
import re
from unicodedata import normalize
_punct_re = re.compile(r'[\t !"#$%&\'()*\-/<=>[email protected]\[\\\]^_`{|},.]+')
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))
鏈接的製品具有另一替代2需要額外的模塊。
嗯,正確的術語是有用的:-)。我會有一個Google,但是如果可以安全地使用這個slug作爲用戶名和目錄名稱,也許你可以回答我? – Timo
只有斜槓('/')在UNIX文件名中是危險的,而在Windows上則是反斜槓('\'),並且它們逃脫了。不知道你將存儲什麼用戶名以進行任何安全評估,但是他們可以很好地使用URL。 –