2012-06-17 5 views
1

사용자가 원하는 사용자 이름으로 등록 할 수있는 Python (및 Flask)으로 웹 응용 프로그램을 만들고 있습니다. 나는 그들의 프로필을/user /에 보여주고 각 사용자마다 서버에 디렉토리를 갖고 싶다.Webapp 사용자 이름 보안

url과 디렉토리 모두에 대해 사용자 이름이 안전한지 확인하는 가장 좋은 방법은 무엇입니까? 나는 base64에서 urlsafe 메서드를 사용하는 사람들에 대해 읽었지만, 쉽게 인식 할 수 있도록 사용자 이름과 관련된 문자열을 갖고 싶습니다.

답변

1

이러한 URL 안전 값의 일반적인 용어는 "slug"이며이를 생성하는 프로세스를 "slugification"또는 "slugify"라고합니다. 사람들은 일반적으로 정규 표현식을 사용합니다. 여기에만 다음 stdlib 모듈을 사용하여, (this article on the subject에서 공급) 중 하나입니다 :

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)) 

링크 된 문서는 추가 모듈을 필요로하는 다른 두 대안이있다.

+0

아, 올바른 용어는 유용합니다 .-). 나는 구글을 가질 것이지만,이 슬러그를 사용자 이름과 디렉토리 이름으로 사용하는 것이 안전하다면 나에게 대답 할 수 있을까? – Timo

+0

슬래시 ('/')는 UNIX 파일 이름에서 위험하며 Windows에서는 백 슬래시 ('\')로만 이스케이프됩니다. 보안 평가를 수행하기 위해 사용자 이름을 저장할 위치를 알지 못하지만 URL을 사용하면 괜찮을 것입니다. –

관련 문제