可能重复:
HTTP POST的安全性如何?
假设我在php中有一个登录页面,用户需要输入他的名字和密码.form method在这种情况下发布.
现在,有人(我的朋友)告诉我,输入和发送到服务器的信息(用户名和密码)只能通过获取生成的结果页面的标题来入侵.所以你应该加密标题,这就是使用HTTPS的原因.
这对我来说没有意义,因为我认为通过post方法发送的信息(用户名和密码)是完全安全的,只是通过黑客攻击,无法访问用户名和密码.
我的朋友是对的吗?如果没有办法为无法访问代码的人做任何事情?如何通过HTTPS发送我的私人信息(要在php中编码的页面)?
编辑:
数据通过get方法通过标头发送.对?数据是否post也通过标头发送?
Dan*_*uis 11
没有SSL,发送的POST数据相当于通过发送的数据GET,换句话说,根本不加密.
如果您只是通过POST发送密码,那么您的密码就不安全 - 仍然可见且未加密,尽管不那么明显.
通过POST发送未加密的密码是最不安全但仍然相对理智的方式.(是的,安全方式较少,但这些方法完全是疯狂的 - 通过GET发送密码形式与在电视上播放或在报纸上打印一样安全.
这就是典型的GET请求:
GET http://somedomain.example.com/path/file?here=are&the=GET¶meters=.
X-Some-Header: header content
X-Another-Header: 1
Run Code Online (Sandbox Code Playgroud)
这是一个类似的POST请求(请注意,您可以在POST请求中发送GET和POST参数):
POST http://somedomain.example.com/path/file?here=are&the=GET¶meters=.
X-Some-Header: header content
X-Another-Header: 1
Content-Length: 40
with_POST&=the&content=is&here_in=the&request=body
Run Code Online (Sandbox Code Playgroud)
如您所见,HTTP是一种完全明文协议 - 没有对数据执行加密,因此任何人都可以在传输过程中查看和/或修改它.访问代码是没有必要的 - 只是看流量和数据将在那里,任何人看到(你可以用工具如Wireshark的,它允许您查看网络流量验证).
要删除这需要信任整个世界,HTTPS(S是安全的)创建的,它提供了加密("只有发件人和收件人才能阅读")和认证("服务器确实是yourserver.example.com,和不是evilserver.example.net").
HTTPS是HTTP的包装器:在HTTP中,客户端连接到Web服务器并启动对话,HTTPS首先建立安全的SSL隧道,HTTP通信通过它.设置HTTPS服务器比HTTP复杂一点,例如参见本文.