【问题标题】:How to secure sending Post data through cURL?如何通过 cURL 安全发送 Post 数据?
【发布时间】:2014-03-18 10:56:33
【问题描述】:

我正在使用客户端 URL 发送 POST 数据。链接到源:http://hayageek.com/php-curl-post-get/#curl-post。代码如下:

<?php
function httpPost($url,$params){
  $postData = '';
   //create name value pairs seperated by &
   foreach($params as $k => $v){
      $postData .= $k . '='.$v.'&';
   }
rtrim($postData, '&');
$ch = curl_init(); 

curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, count($postData));
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);   

$output=curl_exec($ch);

curl_close($ch);
return $output;

}

$params = array(
   "name" => "Ravishanker Kusuma",
   "age" => "32",
   "location" => "India"
);

echo httpPost("http://www.jmediatechnology.eu/script.php",$params);
?>

我想知道这种方法是否可以避免劫持或任何其他安全问题。

【问题讨论】:

  • 您的安全控制应该在接收发布数据的 script.php 上。您无法控制发送到发布 url 的数据,只有这个 script.php 将如何对接收到的数据做出反应。
  • 但是你会说上面的代码在安全方面没问题吗?

标签: php security post curl


【解决方案1】:

您正在发送一个普通的 HTTP 请求。如果有人在网络上的适当位置拦截请求,他就可以清楚地看到。您必须:

  1. 使用 HTTPS。
  2. 将您自己的加密方案作为协议的一部分,并以某种与将解密数据的远程服务器协调的方式加密数据。

我希望很明显你真的想要选项 1。话虽如此,使用 HTTPS 并不能绝对保证你是“安全的”(无论你想应用什么“安全”定义)。如果使用得当,HTTPS 可以有效地保护传输中的数据不被第三方窥探。但这并不意味着您系统的整个其余部分都是安全的,并且您在其他地方没有任何明显的安全漏洞。

【讨论】:

  • 理论上是的。远程服务器必须提供 HTTPS 作为连接选项。如果是这样,这就是你所要做的。
  • 如果您使用的是自签名证书,则必须将证书导入根目录或关闭 curl 证书验证:curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
  • @Dan Whereby 关闭证书验证几乎会破坏击败中间人的目的。
猜你喜欢
  • 2013-04-02
  • 1970-01-01
  • 1970-01-01
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 2010-09-19
  • 2011-10-24
  • 2014-07-23
相关资源
最近更新 更多