Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.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安全地发送服务器回发?_Php_Curl_Postback_File Get Contents_Webhooks - Fatal编程技术网

如何使用PHP安全地发送服务器回发?

如何使用PHP安全地发送服务器回发?,php,curl,postback,file-get-contents,webhooks,Php,Curl,Postback,File Get Contents,Webhooks,我正在构建一个应用程序,它将向用户提供的url(我希望…)发送http请求 也许你们大多数人都知道这是回发、回调或webhook 但是,我担心安全性,因为另一台服务器将发送响应。该响应可能包含代码或谁知道是什么 到目前为止,我已经考虑了以下功能: Curl() 文件获取内容() 在不打开安全漏洞的情况下,最安全的方法是什么?如果不处理服务器的响应,在任何情况下都不会出现安全问题 例如,当您使用: $url = 'http://www.example.com/testaddr'; $resul

我正在构建一个应用程序,它将向用户提供的url(我希望…)发送http请求

也许你们大多数人都知道这是回发、回调或webhook

但是,我担心安全性,因为另一台服务器将发送响应。该响应可能包含代码或谁知道是什么

到目前为止,我已经考虑了以下功能:

  • Curl()
  • 文件获取内容()

在不打开安全漏洞的情况下,最安全的方法是什么?

如果不处理服务器的响应,在任何情况下都不会出现安全问题

例如,当您使用:

$url = 'http://www.example.com/testaddr';
$result = file_get_contents($url);
unset($result);
您有一个包含数据的变量。但这些数据尚未得到处理

使用cURL,您可以使用以下选项获得相同的方法:

$url = 'http://www.example.com/testaddr';
$curl = curl_init();                
curl_setopt ($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($curl);

//If you need to check result, use this:
if (!curl_errno($curl)) {
  $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
  if ($http_code === 200) {
    echo "OK";
  } else {
    echo 'Unexpected HTTP code: ', $http_code, "\n";
  }
}
curl_close($curl);
unset($result);
在这种情况下,它是相同的,您得到$result var的响应,但是,您没有使用它,在这种情况下,它不是一个安全故障

另外,在这两种情况下,出于安全原因和防止过度内存使用,我在完成过程后删除$result变量

正如您在PHP文档中看到的:

CURLOPT_RETURNTRANSFER TRUE以字符串形式返回传输 返回curl_exec()的值,而不是直接输出它

两个不同的层次 我认为你有两个不同的安全级别,你想解决。您可能希望保护通信通道以避免有人欺骗http请求,并且您可能希望清理响应以避免令人讨厌的副作用

保护HTTP请求的安全 这一部分在很大程度上取决于目标服务器以及如何处理通信。如果您可以强制使用HTTPS,那么您可以非常安全地抵御攻击。否则你总是容易被欺骗

净化反应 当您将响应返回到服务器时,这完全取决于您如何使用这些数据。这与选择的函数没有多大关系,而是与调用后如何使用数据有关。 因为您允许用户以这种方式输入,所以只需期待最坏的结果。此时,最常见的清理输入的最佳实践是:使用PDO访问数据库,使用&#xHH;格式等等


我希望这能回答你的问题,否则请随意评论我的答案

背景是什么?请求的“响应”将用于什么目的?@Landen我们不会将响应用于任何目的。我们主要是向他们发送数据,而不是相反的方式。虽然能够知道我们收到了200个响应可能会有点用处。如果您没有进行评估或将其合并到代码中,您不必担心响应是什么。在这一点上,您所做的只是单向发送信息。使用curl,您可以只读取状态代码,而忽略主体。如果他们在函数中插入url以外的内容,该怎么办?这取决于函数的兼容性。例如,如果使用正确的选项,可以使用CURL获取ftp文件。但是,在这种情况下,返回代码可以更改。