我一直看到文章建议Password masking be disabled,因此用户可以看到他们正在键入的内容。使用Django(V1.2)auth应用程序时,它会自动屏蔽密码输入字段。是否有任何简单的,可能是内置的方式来改变这种行为,使密码可见?
我怀疑没有什么简单:)它需要编码 - 设计我自己的表单,或者子类化现有的表单。如果是这样,那么实现它的最佳方法是什么?
答案 0 :(得分:3)
您可以不使用窗口小部件呈现密码字段的输入。那就是取代:
<td>{{ form.password }}</td>
与
<td><input type="text" name="password" id="id_password" /></td>
在您用于登录页面的模板中。
答案 1 :(得分:1)
在django / contrib / auth / formspy
中找到行
password1 = forms.CharField(label=_("Password"), widget=forms.PasswordInput
将此作为PasswordInput是什么导致屏蔽。如果需要,您可以将其更改为文本输入。
我会做得更干净,要么做我自己的形式,要么至少从表单继承并编写我自己的ExtendedUserCreationForm来覆盖默认的字段定义。
答案 2 :(得分:0)
其他帖子介绍了如何更改默认小部件。我会稍微回答一下这个帖子。
首先,屏蔽密码的不是django,它是使用input of type password时浏览器的默认行为。
Afaik,没有办法绕过它。我试过研究一下,如果浏览器有任何额外的安全规定,建议不要改变类型,但还没有找到。
但是根据我的阅读,似乎建议使用密码字段 - 仍然要看这个。
但是,有一些技巧可以解决这个问题。大部分都是js依赖。像:
HTML text field to behave like a password field
http://blog.decaf.de/2009/07/iphone-like-password-fields-using-jquery/
用django实现这个的“方法”或多或少已经得到了回答;)
edit1:发现了几个推荐使用密码类型的引用(因此在我发布的链接中经历了使用两个字段的技巧)。
对密码字段进行了一些额外的检查,这些检查不适用于常规文本输入,以防止XSS漏洞:某些浏览器上的密码字段似乎符合same origin policy。但还有其他几个问题,比如密码管理器(任何使用浏览器的人都可以找到密码,因为文本类型的密码字段是可见的)等等......
很快,google search with stop masking passwords很快就出现了很多人说不同意揭露。iphone之类的密码字段是一个不错的中间地带,但我猜这一切都取决于安全性和安全性之间的平衡。可用性。您多久和一位坐在您旁边的朋友/同事一起登录网站?