2014-07-20 55 views
0

我打算通过curl将一些数据从服务器A发送到服务器B.我有点担心的是攻击者(服务器C)会假装是服务器A的情况:卷曲如何识别请求来自哪里?

A->B : Hello, I am server A; 
C->B : Hello, I am server A; 

如何服务器B知道谁是服务器A或将数据从服务器A?

我是PHP的新手。我非常感谢任何帮助。

+0

你的目标是什么?为什么你想发送数据?也许你应该阅读关于复制,集群和负载平衡(如果我正确地解释你的目标) –

+0

我只想发送一些用户数据从PHP到nodejs服务器。 – user3828771

+0

那为什么用php代替nodejs标记?看看这个答案:我恐怕服务器C可能知道这个答案:http://stackoverflow.com/questions/8107856/how-can-i-get-the-users-ip-address-using-node-js –

回答

0

您可以使用$_SERVER['REMOTE_ADDR']获取客户端IP。

只要得到服务器的IP地址,并在服务器B上检查$_SERVER['REMOTE_ADDR']是否等于服务器IP。

虽然如果服务器C与服务器A在同一子网上,那么它将具有相同的地址。

在这种情况下,您可以让A向服务器B发送密钥,然后B向其进行验证。

例如:A ==== data='blabla' ==== key='654zd87zda32z1d68zad7' ===> B

而在B面,检查重点是等于654zd87zda32z1d68zad7。您可以定期更改此密钥以提高安全性(和/或具有更复杂的密钥)。

在node.js上它也很简单,为了获得客户IP(使用express),使用:req.ip

+0

也是IP地址。 IP地址验证足够安全吗?我需要发送一个ecrypted密钥吗? – user3828771

+0

您可以为了最大限度的安全性而做到这一点。 虽然IP应该是唯一的,并且不能篡改其IP地址(例如,您可以更改您的MAC地址)。 –