Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中,使用cURL获取或发送参数哪个更安全_Php_Security_Curl_Protocols - Fatal编程技术网

在PHP中,使用cURL获取或发送参数哪个更安全

在PHP中,使用cURL获取或发送参数哪个更安全,php,security,curl,protocols,Php,Security,Curl,Protocols,我想以一种安全的方式与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

我想以一种安全的方式与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);

我还意识到
POST
检索数据要慢得多。

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

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

唯一的问题是,请求的URL更可能出现在日志文件中,而不是整个请求正文中。但是,不管怎么说,日志记录都是您将数据发送到的服务,因此它没有多大区别。

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

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


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

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

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

在这方面,因为您使用的是HTTPS,GET和POST彼此都一样安全,因为两者都将在传输层进行加密


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

这是因为您使用的是HTTPS,所以GET和POST彼此都一样安全,因为两者都将在传输层上加密



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

你应该真正询问你正在卷曲的页面需要什么。你应该真正询问你正在卷曲的页面需要什么。HTTP头也是通过HTTPS加密的。@deceze我没说没有,但正如你所说,帖子在正文中,所以我没有提到标题。那我不知道你为什么推荐POST而不是GET“因为身体会被加密”。。。?!我不是反对,但这不是一个很好的答案,因为它表明POST数据是加密的,但查询字符串不是,因此POST数据更安全,这是不正确的。使用
https
对整个请求进行加密,因此在安全性方面,GET或POST没有区别。HTTP头也通过https进行加密。@deceze我没有说它们不是,但正如你所说,POST放在正文中,所以我没有提到头。那我不知道你为什么推荐POST而不是GET“因为身体会被加密”。。。?!我不是反对,但这不是一个很好的答案,因为它表明POST数据是加密的,但查询字符串不是,因此POST数据更安全,这是不正确的。使用
https
对整个请求进行加密,因此在安全性方面,GET或POST没有区别。感谢您的回答!顺便说一句,我应该在我的连接URL中添加
https
,使其安全吗?@Steve yes,如果外部服务器支持https:)谢谢你的回答!顺便说一句,我是否应该在我的连接URL中添加
https
,以使其安全?@Steve yes,如果外部服务器支持https:)正确。加密带来了安全性,而不是通过未加密的连接发送数据的格式。“…日志记录将是您发送数据的服务,因此不会有太大区别。”-好吧,我们现在知道情况并非如此:)对。加密带来的是安全性,而不是通过未加密的连接发送数据的格式。“…日志记录将是您发送数据的服务,因此不会有多大区别。”-好吧,我们现在知道情况并非如此:)
$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);