2012-06-17 64 views
1

我正在Python(和Flask)中創建一個Web應用程序,用戶可以在其中註冊他們想要的用戶名。我想在/ user /上顯示他們的配置文件,併爲每個用戶在服務器上有一個目錄。Webapp用戶名安全

確保用戶名對於URL和目錄都是安全的最好方法是什麼?我閱讀了有關在base64中使用urlsafe方法的人,但我想要一個與他們的用戶名相關的字符串,以便於識別。

回答

1

此類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需要額外的模塊。

+0

嗯,正確的術語是有用的:-)。我會有一個Google,但是如果可以安全地使用這個slug作爲用戶名和目錄名稱,也許你可以回答我? – Timo

+0

只有斜槓('/')在UNIX文件名中是危險的,而在Windows上則是反斜槓('\'),並且它們逃脫了。不知道你將存儲什麼用戶名以進行任何安全評估,但是他們可以很好地使用URL。 –