我知道使用SSL是实现此目的的一种方法。我去了Facebook和LinkedIn这样的网站,看到他们在处理密码和个人设置等敏感数据时只使用https。这是怎么做到的?他们如何在某些网站上实施https,同时在其他网站上使用http,同时仍然保持安全,或者是他们?
答案 0 :(得分:1)
这种方法并不安全。当使用HTTPS时它是安全的,但是一旦你切换到HTTP,所有数据都通过未加密的线路传输。会话ID cookie(或维护状态和用户标识)也是如此。因此,在未加密的线路上窃取信息仍然存在差距,并试图冒充你。
但这种双线法很常见。因为HTTPS有一些缺点。一个是昂贵的(加密传出和解密传入数据),另一个是它至少禁用公共缓存。
答案 1 :(得分:0)
他们的HTTP站点不安全 - 通常,在处理社交网络登录等事情时,HTTPS的开销被认为是不必要的。例如,StackOverflow是不安全的 - 有网络嗅探器的人可以拦截登录cookie并冒充用户。
如果您只是需要检查登录是否有效,并且不关心可用性,则可以使用digest authentication。它提供了一种通过HTTP传输用户名和密码的安全,安全的方法。当然,从网站发回或用户提交的任何数据都容易被嗅探。
简短版本:如果您需要安全性,请使用HTTPS。您甚至可以从CAcert等网站获取免费证书。
答案 2 :(得分:0)
如果您不使用https,这取决于您要保护的内容以及您希望为用户带来多少麻烦。
您可以选择性地加密javascript中的数据,以便只保护敏感信息,但这样做有风险,因为javascript中的任何操作都可以进行逆向工程。
您可以在此处查看我的答案,了解javascript中的一种方法: How Do I encrypt post data while using ajax and JQuery?
如果您只是不希望在传输过程中修改数据,则可以创建哈希值,或者将数据保存为哈希值(如果将其保存为哈希值)。密码通常保存为哈希,因此这对他们来说是有意义的。
你可以在javascript中完成所有这些操作,但它会减慢传输数据的速度。
如果您正在使用也通过http的webservices,那么这些选项也可以使用,但它们可以更快,因为程序不在javascript中。
答案 3 :(得分:0)
安全性远远超过HTTP / HTTPS。这些只是为了防止在线路上读取数据。
在HTTP站点上执行HTTPS请求的最简单方法是通过一个表单,其行为是https://yoursite/login或类似的。这将导致您转到该页面,并且这些页面通常会返回您来自的位置或转发到主页。 Facebook就是这样做的。该网站的其余部分被认为是相对安全的,因为访问控制是为了确保那些有权查看某些内容的人是唯一可以这样做的人。这不能防止Wireshark或其他嗅探流量的工具。通过ajax发帖是一个坏主意,因为使用跨站点脚本来搞乱ajax调用太容易了。