为什么说https会http更安全呢?


网上看了一大堆,还是不明白,他怎么就安全了啊,要是程序写的不严谨,别人照样注入啊

http HTML https

路人河豚_迦叶 9 years, 7 months ago

我们老师说 https也不是很安全的.我不明白为什么不安全.
不是说楼主那样的什么什么程序设计..
我指的就是 中间人攻击这问题上 他能保证吗,虽然从费马的XXX算法来说,我是相信的,但是实际上应用会不会有什么漏洞?

册册cee answered 9 years, 7 months ago

HTTPS 可以看作是“安全”版本的HTTP,主要有两个原因:
第一, HTTPS把用户到服务器端的数据流量都加密了,所以不会存在中间第三方拦截数据的问题(这是其他答案都提到了的);
第二,当你在浏览器打开一个网址时,比如www.segmentfault.com,HTTPS会帮你验证你打开的是不是真正的www.segmentfault.com,这样就可以避免你进入一个钓鱼网站啦。

顶风尿一身 answered 9 years, 7 months ago

寄信人 收信人 防止信被 送信人 偷看 或者 改写 信中的内容,就需要 双方认同的加密 这个加密就是 https

刹那F·· answered 9 years, 7 months ago

https主要解决不是注入的问题,而是中间传输被第三方拦截的问题。

比如你的论坛有用户名密码输入框,虽然你的密码框属性为type=password,屏幕看不见了,但是传输给服务器的post字符串是明文的。

此时假设你们公司的网管在路由器上sniffer数据,那么就能看到你的密码。

而HTTPS把浏览器和server之间的通信加密了,sniffer只能看到加密后的东西,就无意义了。

suloli answered 9 years, 7 months ago

http传输的是明文内容,也不对传输双方进行身份验证。只要在数据传输路径的任何一个环节上,都能看到传输的内容,甚至对其进行修改;
https之所以比http安全,是因为他利用ssl/tls协议传输。它包含证书,卸载,流量转发,负载均衡,页面适配,浏览器适配,refer传递等。

sanmao answered 9 years, 7 months ago

这里要明确https的作用,https是用来加密网络上传输的数据,不对数据内容做验证。

如果你的网站使用https,它能保证用户和你网站交互发送的数据不被第三方监听(如被三方使用wireshark类抓包工具抓包)并明文查看。

如支付宝官网使用https,能保证你的银行账号和密码不被泄露。https把你的个人信息加密后再网络上传输。

但是,https不会检查你发送的具体内容。它不会管你是否发的是银行账号和密码,还是sql注入数据。它只保证数据加密。

具体用户发送的数据(账号密码还是sql注入),就需要你在代码里进行检查了

大U熊老缘 answered 9 years, 7 months ago

先说说http为什么不安全,因为容易被csrf(跨站请求伪造),简单的说就是坏人捡到了你的钥匙(信物),然后开了你家的门!因为门是无法识别谁开了它!(这句话好变扭),而且http是使用了明文传输。

那么https呢,使用了一个套加密传输协议ssl,具体可以看 这里

hanes answered 9 years, 7 months ago

事实上你对‘https更安全’的理解有误,https比http安全指的是数据传输过程,而不是服务器后台的安全防护。https只能防止别人直接监听数据包拿到传输内容而已,对于服务器漏洞或者sql注入之类的,https并没有任何比http高明的地方


http明文,就是明信片,别人拿到了就可以看到内容。
https是上锁的保险箱。别人拿到了也开不了锁(就目前的计算机性能来说没办法暴力破解https数据包)

灵乌路空乌鸦 answered 9 years, 7 months ago

HTTPS仅仅只是在传输过程中加密了。

举个例子:
A给B写信,写完邮寄给B,但是在邮寄的过程中,邮递员可能会偷偷的把信取出来看完后再放回去,收发室大爷可能也会偷偷取出来看一眼,B收到信的时候,可能在传输过程中已经被很多人看过了。如果信件中有一些银行卡账号密码什么的,可能在传输过程中已经被别人悄悄记下来了。这就是HTTP。

A和B发现了这个问题,于是他们约定了下次写信要加密,A写信的时候加密,B收到信在解密,加密解密的方法只有A和B知道。同样在寄信的过程中,邮递员、收发室大爷偷偷看了信,但是完全看不懂,信件的内容不会泄露,就安全的多。这就是HTTPS。

所以通常在浏览一般网页的时候,可能不会用HTTPS,而在用户登录需要输入密码时,会用HTTPS,因为登录肯定要传输用户名密码,不加密可能就会被别人看到。

另外,百度最近的一个重大变化就是从HTTP切换到HTTPS:
http://zhanzhang.baidu.com/wiki/383 (一篇值得一看的文章)
从此百度告别了运营商劫持。

什么是运营商劫持?
运营商会在一些流量大的网站,加上一些小广告来增加收入。有时候你打开百度,会在右下角弹出一个广告,这个广告不是百度加上的,是运营商加的。
也就像上面例子中,邮递员不但打开看了你的信件,而且在你的信件上加入小广告,让你以为是A加的。如果HTTPS加密,邮递员是无法将小广告加密放到你的信中。

Mr丶星星星 answered 9 years, 7 months ago

如果你要访问163,不是直接到163的,需要中间有很多的服务器路由器的转发。

假设你是可信的,163.com也可信,但是中间的节点就未必。

比如


 C:\Users\rita>tracert www.163.com

通过最多 30 个跃点跟踪
到 163.xdwscache.glb0.lxdns.com [220.167.14.40] 的路由:

  1     5 ms     2 ms     4 ms  100.64.0.1
  2     3 ms     3 ms     3 ms  100.64.0.1
  3     *        *        *     请求超时。
  4     7 ms     5 ms     7 ms  171.208.203.85
  5    12 ms     8 ms     8 ms  171.208.203.146
  6    15 ms    14 ms    15 ms  118.121.1.42
  7     9 ms    11 ms     9 ms  118.121.1.5
  8     9 ms     9 ms     9 ms  220.167.14.40

这8个节点,任何一个都可以串改你的信息和发给你的信息。

实际上运营商劫持就是这些节点中一些小子为了盈利而修改发给你的html,嵌入他的广告。

如果是https,这些节点个个都不知道你和163到底在发些啥,也没有办法改,因为秘钥(公用的私有的)在你的163之间才有。

所以,https防止的是中间节点使坏。这在我们的场景下,是非常好有价值的。

command answered 9 years, 7 months ago

Your Answer