2010-11-29 122 views
32

多位安全专家过去曾表示,登录页面应该位于ssl https上。那么,如果我的登录是在所有页面上显示的块,该怎么办?这是否意味着我的整个网站必须是https?必须登录成为https页面

我读过它可以将表单放在http上,但将其发布到https,但我读过一个人说,它可以被中间人攻击中的一个人利用。有人能证实这一点吗?我有一个100点的奖励给可以证实这一点的人(并帮助我解决这个问题的实际答案)。我的登录表单位于每个页面上,是否需要在https上创建整个网站?请随时质疑我在这里所说的任何内容。他们只是我阅读过的东西,但没有经验,也没有亲自尝试。

编辑:对于那些问我,当我发布这个问题时,我试图设置赏金,但系统不会让我。我查看了常见问题解答,并看到可以在发布问题2天后发布赏金。这就是为什么你看不到赏金。但是我不会选择一个答案,直到我在2天内设置了奖励。对不起,有任何困惑。

+7

我没有看到75点奖励。 – Reinderien 2010-11-29 23:40:36

+0

问题是6分钟的时候,一个赏金不能添加(现在提供一个为时过早)。 – Quentin 2010-11-29 23:44:44

+1

我们都知道答案,但是你的赏金声明让我们无法回答:) – Michael 2010-11-29 23:45:08

回答

30

我读过它可以将表单放在http上,但将其发布到https,但我读过一个人说,它可以在中间人攻击中被利用。有人能证实这一点吗?

是的。表单通过HTTP提供,因此中间的人可以对其进行更改(例如,它在表单提交之前将凭证发送到自己的服务器)。

一个实际的答案如何安全地解决此

如果安全真的很重要 - 使用HTTPS整个站点。即使密码已经发送,如果你回到HTTP然后cookie可以被盗(见Firesheep

如果安全性不重要,那么不要把登录表单放在每一页上。只需链接到登录页面即可。

+0

大约一个小时前还有另一个答案,但我猜所有者因为投票而将其删除。他在说,Facebook使用http作为主页面,但将表单发布到https,就像我在问这个问题一样。我检查了他们的代码,确实他们做了`https:// login.facebook.com/login.php`所以..有没有我们想念的东西,或者他们在这里拨错了电话?我只是想知道,因为Facebook是大狗,如果它确实没有安全感,他们应该知道这些东西?任何意见? – sami 2010-11-30 00:52:22

3

如果你希望你的数据安全,你必须在整个网站上使用SSL(认证)。但是您不需要使用SSL来保证您的密码安全。例如,您可以使用openID,脸书连接,twitter登录为您处理这部分。这样一来,密码就不会通过纯文本的方式发送出去。

0

我读过它可以将表单放在http上但将其发布到https,但我阅读某人说,它可以被中间人攻击中的一个人利用。

<form>的目标是由浏览器在使用中执行的全新呼叫。

如果URL http://example.com/被访问和网页的内容已被浏览器渲染,不安全的连接被关闭(是的,它可以保持打开[保持活动。但对于URL请求是完成)。

对于网站的登录目标https://example.com/的SSL会话将服务器和客户端之间使用不同的服务器端口(通常为443),并且没有由现有的页数据(可能除了“参照”)被用来进行协商/之后发送安全连接已建立。

我读过它可以将表单放在http上,但将其发布到https,但我读过一个人说它可以在中间人攻击中被一个人利用。有人能证实这一点吗?

是的。表单通过HTTP提供,因此中间的人可以对其进行更改(例如,它在表单提交之前将凭证发送到自己的服务器)。

在被攻破的网站也没关系,内容是否已送达可靠与否。一个网站的内容可以通过SSL传递,但代码仍然可能被泄露。

此外,cookie可能被盗。但他们只是文字。这就是你的网站所做的,“文本”是重要的。如果你依赖于“浏览器”告诉你的脚本,你的应用程序是不安全的。使用cookie验证(基于IP,基于浏览器,无论基于什么),因此cookie不能“被盗”。

每当用户发送数据时使用SSL安全的网站,即值得保护。评论博客文章是不是一件事我会强调我的服务器与建立一个SSL连接...

0

即使你试图把登录块放在一个使用https的iframe中,一个男人在中间攻击可能会轻易改变iframe的src,因此您可以使登录框成为登录链接(使用https登录页面),或者您需要更多资源才能使用ssl为具有登录框的所有网页运行您的网站...

4

那么,如果你不使用SSL进行登录,那么用户的密码可能会泄露给任何有意收听客户端 - 服务器通信(基本上是读取数据流)的人。 (这是不好的^^)

正如上面的goreSplatter所说,您可以很容易地将表单目标设置为安全端点(即https://site.com/login),并且将使用安全连接来发送用户凭证和接收响应。

然后,大多数网站继续通过基本的HTTP进行通信,这只会“使”用户面临会话劫持风险(中间人读取其会话标识符/签名/随机数/任何内容,然后假装为经过身份验证的客户端,因此如果他成功了,他可以操纵客户端的受保护资源,但此方法不允许“窃取整个帐户”)。这通常被认为是次要威胁,并且由于与SSL通信相关的开销,所有请求的安全连接仅用于关键应用程序(例如网上银行)。

最后,回答你的问题:不,只有在传送敏感数据的地方才必须保证安全。

1

您是否可以重新设计UI概念?理念:在每个页面上都有信息登录UI,但不是实际的登录控制。您的新信息控制将列出:根据国家

  1. Logged In As <user_name>Not Logged In
  2. LoginLogout链接,然后

的链接会显示登录弹出,其内容完全是安全网页。

这种方法可以让你接近你已经拥有的东西(每个页面上的一些登录功能),但是路由/分层的方式是你的身份验证完全通过SSL进行安全保护。

1

例如,GMAIL在您可以启用SSL的配置中有一个选项。 Facebook,Twitter和所有社交媒体都没有SSL或未启用。

我认为如果您真的希望您的网站从所有恶意(bot或不)的安全性更好地使用SSL。 (但如果启用了SSL,则有被劫持的风险)否则,您可以尝试使用js硬编码混淆表单数据。

上面的很好的答案,再加上一切,并得到你自己的想法关于此事!

祝你好运。