在PHP中使用cURL更安全的GET或POST发送参数

时间:2012-11-30 11:00:26

标签: php security curl protocols

我希望以安全的方式使用API​​进行连接,并使用cURL使用HTTPS和SSL进行连接。

现在,我想知道在安全方面哪些方面更好,通过GETPOST发送数据:

$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检索数据要慢得多。

3 个答案:

答案 0 :(得分:3)

都不是。 “GET参数”是URL的一部分,它是HTTP请求头的一部分,“POST参数”是HTTP请求体的一部分。两者都是同一HTTP请求的一部分,这只是纯文本。 “安全”没有区别。

根据请求的类型,在语义上使用GET或POST,而不是出于安全考虑。

唯一的问题是请求的URL比整个请求体更可能出现在日志文件中。但是,一次记录将是您发送数据的服务,因此它没有太大的区别。

答案 1 :(得分:1)

它们都不安全,但如果您使用安全连接(https),则可以使用POST,因为正文将被加密。发送密码不是一个好主意,甚至不是带有URI的用户名。

答案 2 :(得分:1)

在这个原因中,因为你使用HTTPS,GET和POST就像对方一样安全,因为这两个都将在传输层加密。

例如,如果你没有使用HTTPS,那么在某些情况下,POST可以更好但不一定更安全。这是因为服务器通常记录查询字符串,而通常不记录POST数据。