在PHP中,使用cURL获取或发送参数哪个更安全
我想以一种安全的方式与API连接,我正在使用在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
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);