使用API请求数据GET和POST|这个curl使用起来安全吗


Requesting data using API Confusion between GET and POST | Is this curl get secure to use?

我正在使用它从API请求一些数据:

<?php
$query = "https://somewebsite.com/apiv2/customer.stats.json?api_user=USERNAME&api_key=PASSWORD@&user=SUBUSER";
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => $query
));
$result = curl_exec($curl);
curl_close($curl);
echo $result;
?>

现在,变量$query包含一个URL,这个URL有用户名和密码。上面的方法使用GET,它在处理时会泄漏数据吗?

对不起,我只是在学习。我知道在处理敏感信息时使用POST会更安全,所以我认为只有在我们计划更改某些内容时才应该使用POST。在这种情况下,我只是在查阅数据,没有任何更改,所以在我的脑海中我不能使用POST。这让我很困惑。

有人能解释一下吗?我们将不胜感激。

谢谢。

在CURL中,您的URLPARAMETERS应该是分开的。在选项中使用CURLOPT_POSTFIELDS,并为CURLOPT_URL 提供基本URL

编辑:您可能还需要考虑将CURLOPT_SSL_VERIFYPEER设置为true

有问题的数据将存储在内存中,这是不可避免的。这不是一般的安全风险。

连接使用https,因此在连接到服务器时不会暴露它——这很好!

我看不到https证书的验证,所以任何控制你和他们之间网络的人(不是简单的,但也不是不可能的)都可以假装是服务器,收集信息。不好。

你的脚本中有一个明文密码。如果有人可以下载你的脚本,他们就有你的密码。不好,但很难避免。

为了可读性,您的"设置"(用户名和密码)应该与URL分开。不是安全风险,而是糟糕的编程实践。

作为对您评论的回应,请保留用户名&密码分离,你可以这样做:

$username='bob';
$password='s3kr3t!';
$subuser='matty';
$url="http://...?this=$username&password=$password...";

或者,你可以让它更整洁:

$creds=Array(
    "api_user"=>"bob",
    "api_key"=>"1234",
    "user=subuser"
);
$url="http://google.com/?"+http_build_query($creds);