0

我正在使用它从 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。这让我很困惑。

有人可以解释一下吗?将不胜感激。

谢谢你。

4

2 回答 2

1

在 CURL 中,YourURLPARAMETERS应该是分开的。在您的选项中使用CURLOPT_POSTFIELDS和您的基本 URLCURLOPT_URL

编辑:您可能还想考虑设置CURLOPT_SSL_VERIFYPEERtrue.

于 2013-06-28T20:25:26.570 回答
0

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

连接使用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);
于 2013-06-28T20:30:42.210 回答