我在PHP.net文档中阅读了以下有关HTTP请求动词的信息:
所选的HTTP请求动词(例如POST,GET)不一定 使请求“安全”。任何未传输的信息 通过加密通道(使用SSL,即HTTPS)进行传输 计划文本。
用于通过HTTP安全传输敏感/私人信息 考虑使用SSL,因为这可以防止eve丢弃信息 通过HTTP传输。
这是什么意思?方法 - GET / POST不安全吗?如果是,如何使用SSL通过HTTP安全传输敏感信息?
答案 0 :(得分:1)
HTTP不安全,因为数据包是以纯文本形式发送的。 HTTPS在双方使用加密方法,因此数据是安全的,除非第三方有权访问私钥来解密消息。
对于HTTPS,您需要私钥和证书,可以是自签名证书,也可以是许多证书颁发公司之一。一旦你有了一个,你可以告诉你的网络服务器使用这个证书,并加密所有通信,如果通过适当的端口发送。默认情况下,HTTP端口为80,如果您不提供此处http://google.com/
之类的端口,浏览器将自动假设您正在查询端口80。实际上是http://google.com:80/
。
SSL(HTTPS)端口为443,当您将浏览器指向例如https://google.com/
。这意味着您需要确保网站在端口443上提供内容,否则它将不会被加密。
有大量的教程将指导您完成使您的网络服务器使用SSL证书的过程。
答案 1 :(得分:0)
以Google搜索为例:如果您在Google上搜索“foobar”,地址栏会显示
http://www.google.com/search?q=foobar
所以用户立即以明文方式看到该信息(这是GET方法)。
现在,假设您正在登录网站。那可能会使用POST方法,你会看到地址栏上的
http://www.example.com/login.php
用户名和密码不会直接显示给用户,而是在请求正文中发送。
但是,POST和GET请求仍然以明文形式发送到服务器,因此网络上的攻击者可以“嗅探”连接并窃取它们。
使用SSL可以保护URLS,标题,页面正文甚至服务器地址,因此攻击者只会看到随机数据。
PHP文档试图教导的是,即使用户看不到地址栏上的值,也不意味着这些值以某种方式加密。
希望这有帮助。
答案 2 :(得分:0)
每当网页使用
时(GET/POST method)
不使用
传输值SSL/HTTPS
数据以纯文本形式传输。
使用POST的GET和POST表单之间的主要区别不是显示URL中的值(但它以纯文本形式传输),而GET在URL中显示值(以纯文本形式传输)。
回答您的另一个question