Django命名了URL和HTTPS / SSL

时间:2011-02-10 15:04:50

标签: django https

我目前正致力于使用SSL保护我的Django网站。我希望某些URL模式只能通过HTTPS访问。最重要的一件事是保护登录站点。有一个表单,用户将其登录名/密码输入表单,表单将POST到服务器。在登录页面模板中,我有类似

的内容
<form method="POST" action="{% url login %}">

在我的urls.py中,其中一种模式类似于

    url(r'^login/$', 'mySiteLogin', name='login'),

现在我发现了一些资源,建议我应该使用一个将http重写为https的中间件,例如:Django relative urls and https。但登录无法以这种方式完成 - 当用户已经以明文发布密码时,重写协议是没有用的!

所以我在想,我可以告诉{% url %}使用https吗?我正在考虑使用装饰器标记需要加密的视图的解决方案,然后某些类似于{% url %}的标记将使用此信息并在需要时创建与https的链接。

或者还有其他方法吗?

谢谢,

麦克

2 个答案:

答案 0 :(得分:3)

  

但登录无法通过这种方式完成    - 当用户已经发布了他们的协议时,重写协议是没有用的   明文密码!

只需通过HTTPS提供登录页面。这似乎是一个好主意。

  

“到1月5日,很明显是一个   整个国家的密码价值   正在被盗   就在最伟大的中间   两次政治动荡   几十年。“ - 这就是你不应该这样做的原因   通过HTTP提供您的登录表单   虽然它通过HTTPS进行POST。

     

http://simonwillison.net/2011/Jan/24/

简而言之,来自突尼斯的互联网服务提供商将恶意JavaScript代码注入Facebook的登录页面以窃取用户登录信息。

答案 1 :(得分:0)

也许您应该考虑在HTTP和HTTPS之间进行重定向的中间件解决方案。一个例子:http://djangosnippets.org/snippets/85/