2016-10-03 3 views
0

저는 PostgreSQL과 web.py를 가지고 놀고 있는데 데이터베이스에 사용자 이름과 비밀번호가 있고 비밀번호에 회원 인 특수 문자가 포함되어있을 수 있습니다. string.printable의 경우, 쿼리 된 비밀번호를 web.py 템플릿을 통해 브라우저에 인쇄하려고 할 때 문자가 이스케이프되는 것과 관련하여 문제가 발생하며 비밀번호는 표시하지 않으려합니다. 대신 브라우저는 암호가 포함 된 텍스트 파일 (파일 확장명 없음)을 다운로드 할 것을 제안합니다. 내 파이썬 파일에서web.py 양식을 사용하여 PostgreSQL 데이터베이스의 비밀번호를 표시하십시오.

:

class login: 
    ... 
    def POST(self): 
     ... 
     cursor.execute("SELECT password FROM tbl WHERE username = %s", (f['username'].value,)) 
     realpassword = cursor.fetchone() 
     realpassword = realpassword[0] 
     ... 
     return realpassword 

암호는 다운로드 텍스트 파일에 올바르게 표시되지만 어떻게 웹 페이지에 텍스트로 암호를 표시하는 방법은 무엇입니까?

+0

데이터베이스에 일반 텍스트로 비밀번호를 저장하지 않기를 바랍니다. – pferate

+0

예,이 문제를 설명하기위한 목적으로 작성되었습니다. –

답변

1

파이썬 string.printable에는 세로 탭 \x0b과 양식 피드 \x0c이 모두 포함되어 있으며 어느 것도 브라우저와 친구가 아닙니다. 브라우저는 파일을 받고 다운로드를 제안한다고 가정합니다.

(string.printable는 ASCII와 동일하지 않습니다.)

대신 원시 realpassword을 반환하는 repr(realpassword)을 반환합니다. 내장 된 repr()은 제어 문자를 이스케이프하는 "인쇄 가능한 표현을 포함하는 문자열 ..."을 반환합니다.

>>> import string 
>>> print string.printable[-20:] 
=>[email protected][\]^_`{|}~ 



>>> print repr(string.printable[-20:]) 
'=>[email protected][\\]^_`{|}~ \t\n\r\x0b\x0c' 
관련 문제