假设我在php中有一个登录页面,用户需要输入他的名字和密码。 form method
在这种情况下发布。
现在有人(我的朋友)告诉我,输入和发送到服务器的信息(用户名和密码)只能通过获取生成的结果页面的标题来入侵。所以你应该加密标题,这就是使用HTTPS的原因。
这对我来说没有意义,因为我认为通过post
方法发送的信息(用户名和密码)是完全安全的,只是通过黑客攻击,无法访问用户名和密码。
我的朋友是对的吗?如果没有办法为无法访问代码的人做任何事情? 如何通过HTTPS发送我的私人信息(要在php中编码的页面)?
编辑:
通过标头发送get
方法的数据。对?是否通过标头发送了post
的数据?
答案 0 :(得分:11)
如果没有SSL,通过POST
发送的数据相当于通过GET
发送的数据,换句话说,根本不加密。
答案 1 :(得分:8)
如果您只是通过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
这是一个类似的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
正如您所看到的,HTTP是一种完全明文协议 - 没有对数据执行加密,因此任何人都可以在传输过程中查看和/或修改它。根本不需要访问代码 - 只需观察流量和数据,任何人都可以看到(您可以使用Wireshark等工具验证这一点,以便查看网络流量)。
为了消除这种信任全世界的需要,创建了HTTPS(S代表安全),它提供加密(“只有发送者和接收者可以读取它”)和身份验证(“服务器确实是你的。例如。 com,而不是evilserver.example.net“)。
HTTPS是HTTP的包装:在HTTP中,客户端连接到Web服务器并启动对话,HTTPS首先建立安全的SSL隧道,HTTP通信通过它。设置HTTPS服务器比HTTP复杂一点,请参阅例如this article
答案 2 :(得分:3)
您可以使用Wireshark阅读提交的数据 - http://de.wikipedia.org/wiki/Wireshark 如果您在没有https的情况下发送了表单数据。
答案 3 :(得分:2)
如果是登录表单,我会在提交表单之前使用javascript来密码密码。它会让它变得更难。
答案 4 :(得分:1)
我想到了这些信息(用户名 通过post方法发送的密码) 完全安全
错误。通过POST发送的数据实际上与通过GET发送的数据一样不安全。唯一(边际)差异是GET数据通过网址历史记录和可能的日志略微“可访问”。但是,如果有人可以嗅探链接,他可以非常轻松地通过http请求(POST或GET)发送用户和密码,除非使用SSL(https://)。
答案 5 :(得分:0)
HTTP是不安全的,并受其约束 中间人和窃听 攻击可以让攻击者获益 访问网站帐户和 敏感的信息。 HTTPS是 旨在抵御这种攻击和 被认为是安全的 攻击。
如果您担心某人拦截您的数据,请使用HTTPS。
答案 6 :(得分:0)
我相信提交表单的php脚本,表单本身需要位于使用SSL设置的Web服务器上的目录中。您还必须为该网站启用SSL证书。