Django auth-app密码屏蔽 - 任何关闭方式?

时间:2011-05-10 19:02:00

标签: django security

我一直看到文章建议Password masking be disabled,因此用户可以看到他们正在键入的内容。使用Django(V1.2)auth应用程序时,它会自动屏蔽密码输入字段。是否有任何简单的,可能是内置的方式来改变这种行为,使密码可见?

我怀疑没有什么简单:)它需要编码 - 设计我自己的表单,或者子类化现有的表单。如果是这样,那么实现它的最佳方法是什么?

3 个答案:

答案 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之类的密码字段是一个不错的中间地带,但我猜这一切都取决于安全性和安全性之间的平衡。可用性。您多久和一位坐在您旁边的朋友/同事一起登录网站?