【问题标题】:Display password from PostgreSQL database using web.py form使用 web.py 表单从 PostgreSQL 数据库显示密码
【发布时间】:2016-10-03 16:41:47
【问题描述】:

我正在使用 PostgreSQL 和 web.py,我注意到如果我在数据库中有用户名和密码,并且密码可能包含 string.printable 成员的特殊字符,那么当我想要通过web.py模板将查询到的密码打印到浏览器,字符转义出现问题,密码不想显示。相反,浏览器会提供下载包含密码的文本文件(没有文件扩展名)。

在我的 Python 文件中:

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

密码在下载的文本文件中正确显示,但如何在网页上将密码显示为文本?

【问题讨论】:

  • 我希望您不会真正将密码作为纯文本存储在数据库中。
  • 是的,我只是为了说明这个问题!

标签: python postgresql python-3.x web.py


【解决方案1】:

Python string.printable 包括vertical-tab \x0b 和form-feed \x0c,它们都不是浏览器的朋友。浏览器假定他们正在接收一个文件并提供下载它。

(string.printable 与 ASCII 不同。)

返回repr(realpassword),而不是返回原始realpassword。内置repr() 返回一个“包含可打印表示的字符串...”,转义控制字符。

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



>>> print repr(string.printable[-20:])
'=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 2023-03-11
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    相关资源
    最近更新 更多