Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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 使用API请求数据时,GET和POST之间存在混淆|这个curl使用起来安全吗?_Php_Post_Curl_Get - Fatal编程技术网

Php 使用API请求数据时,GET和POST之间存在混淆|这个curl使用起来安全吗?

Php 使用API请求数据时,GET和POST之间存在混淆|这个curl使用起来安全吗?,php,post,curl,get,Php,Post,Curl,Get,我使用此命令从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_U

我使用此命令从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中,您的
URL
参数应该是分开的。在选项中使用
CURLOPT_POSTFIELDS
,并为
CURLOPT_URL


<>编辑:您可能还需要考虑将<代码> CurLoptTysSLVIVIFIFYPER <代码> > <代码>真/ <代码> .</P> < P>所存储的数据将被存储在内存中,这是不可避免的。这不是一般的安全风险

连接使用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);

尽管您使用的是SSL,因此您的数据在传输到服务器的过程中不会被篡改,但请记住,查询字符串存储在服务器请求日志中,因此任何访问日志的人都可以看到查询字符串。如果服务器遭到黑客攻击,那么,您可以找出其余的:)谢谢您的建议,我现在就解决:)。这不是问题,但不一定是在URL中包含curl参数的好做法。我会将CURLOPT_SSL_VERIFYPEER设置为true,谢谢。但是如何在URL中使用参数呢?你能给我解释一下吗?我不想在URL中包含用户名和密码。Curl仍将编译最终请求,特别是如果这是GET请求。您只需使用<代码> CurLopt*PixFiels并将其设置为<代码>键= Value/Ky2= Value2和Ke3.= Value3。PS:您应该认为自己不需要使用OAuth2访问这个API是幸运的。很多人开始使用它。。。我讨厌它(个人)。哦,我想我明白了,我会试着去做,如果我能让它工作的话,我会在这里发布。我怎么能把设置和URL分开呢?我知道这是一个愚蠢的问题,我猜我可以用“”;但显然我不能:/