我希望以安全的方式使用API进行连接,并使用cURL
使用HTTPS和SSL进行连接。
现在,我想知道在安全方面哪些方面更好,通过GET
或POST
发送数据:
$ch = curl_init("http://api.website.com/connect.php?user=xxx&pass=xxxx");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
$result = curl_exec($ch);
curl_close($ch);
或者
$param['user'] = 'xxxx';
$param['pass'] = 'xxxx';
$ch = curl_init("http://api.website.com/connect.php");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $Parameters);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
$result = curl_exec($ch);
curl_close($ch);
我也意识到POST
检索数据要慢得多。
答案 0 :(得分:3)
都不是。 “GET参数”是URL的一部分,它是HTTP请求头的一部分,“POST参数”是HTTP请求体的一部分。两者都是同一HTTP请求的一部分,这只是纯文本。 “安全”没有区别。
根据请求的类型,在语义上使用GET或POST,而不是出于安全考虑。
唯一的问题是请求的URL比整个请求体更可能出现在日志文件中。但是,一次记录将是您发送数据的服务,因此它没有太大的区别。
答案 1 :(得分:1)
它们都不安全,但如果您使用安全连接(https),则可以使用POST,因为正文将被加密。发送密码不是一个好主意,甚至不是带有URI的用户名。
答案 2 :(得分:1)
在这个原因中,因为你使用HTTPS,GET和POST就像对方一样安全,因为这两个都将在传输层加密。
例如,如果你没有使用HTTPS,那么在某些情况下,POST可以更好但不一定更安全。这是因为服务器通常记录查询字符串,而通常不记录POST数据。