我正在使用它从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。这让我很困惑。
有人可以解释一下吗?非常感谢。
谢谢。
答案 0 :(得分:1)
在CURL中,您的URL
和PARAMETERS
应该是分开的。在您的选项中使用CURLOPT_POSTFIELDS
,在CURLOPT_URL
修改:您可能还需要考虑将CURLOPT_SSL_VERIFYPEER
设置为true
。
答案 1 :(得分:0)
有问题的数据将存储在内存中 - 这是不可避免的。这通常不是安全风险。
连接使用https,因此在连接服务器时不会暴露 - 这很好!
我看不到https证书的验证,所以任何能够控制你和他们之间的网络(不简单但不是不可能)的人都可以伪装成服务器并收集信息。不好。
您的脚本中有明文密码。如果有人可以下载您的脚本,他们就会有您的密码。不好,但很难避免。
为了便于阅读,您的“设置”(用户名和密码)应与URL分开。不是安全风险,而是糟糕的编程实践。
在回复您的评论时,要保留用户名和&amp;密码分开,你可以这样做:
$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);