如何授权000webhost帖子?

时间:2017-03-30 16:04:05

标签: php security curl encryption server-to-server

我在php中使用curl将数据从本地服务器发布到webhost服务器:

  $post = array('test' => 'this is a test' );
    $url = "https://my-app.000webhostapp.com";
            $curlSesh = curl_init();
            curl_setopt($curlSesh, CURLOPT_URL, $url);
            curl_setopt($curlSesh, CURLOPT_POST, true);
            curl_setopt($curlSesh, CURLOPT_POSTFIELDS, $post);
            curl_setopt($curlSesh, CURLOPT_RETURNTRANSFER, true);
            $response = curl_exec($curlSesh);
            curl_close($curlSesh);
            echo "response: ";
            echo $response;
            if ($response == "validate post")echo ' post has been validated';

在我的000webhost服务器上,我接受使用file put contents:

在$ post中发送的数组
file_put_contents('incomingData.txt', $_POST["test"]. "\n", FILE_APPEND );

这肯定意味着任何人都可以使用数组密钥发送一个帖子请求到我的虚拟主机服务器'测试'那将被放在我的incomingData.txt文件中?这非常不安全。有没有办法让它只接受我的本地服务器数据,或者我可以以某种方式加密数据?感谢。

2 个答案:

答案 0 :(得分:2)

为了澄清,您的数据已使用https://进行加密。有许多方法可以验证您的流量,但一种简单的方法是添加一个"私钥"在你的帖子中。

所以你可以做到

$post = array('key' => 'some private key', 'text' => ... )

在服务器上检查以确保脏数据无法通过

if ($_POST['key'] != 'the key you made')
  die()

答案 1 :(得分:2)

要验证您的Curl请求收到的数据,除了对其真实性有合理怀疑外,您还可以使用HMAC系统,这是一个基于哈希的消息验证代码,也是TLS( https )用于验证收到的数据是否与传输中发送的数据相同。

HMAC是一小组数据,可帮助验证消息的性质;它保护了消息的完整性(以及扩展的真实性)。

方法是:

    1. 将要发送的数据收集到单个字符串/数组/对象值中。
    1. 添加密钥
    1. 创建组合数据+密钥的哈希。这是HMAC
    1. 将数据“payload”和HMAC发送给接收方。
    1. 发送密钥。
    1. Receiver然后收集 Payload ,并添加自己的密钥副本并生成哈希,就像发件人一样。
    1. 如果本地HMAC等于通过智能发送的HMAC,则表明发送的有效载荷数据与接收的有效载荷数据相同。
    1. 此方法的一大优势在于,与ma11ocs answer不同,您的密钥永远不会在数据(有效负载)中共享或传输,因此它正在保护。

密钥是用于计算HMAC的唯一信息,并且由消息的发送方和接收方都知道,但从不在消息中发送。此密钥的长度会有所不同,具体取决于您使用的算法。有些算法比其他算法更好,有些算​​法如MD5不应该使用,因为它们太快且容易研究。

链接