2012-11-26 57 views
1

我有几个网站与电子邮件注册表单。我想在不同的服务器上填充一个中央数据库,然后这些网站。 我正在考虑将表单的action属性设置为中央数据库服务器上的web服务。这个web服务可以简单地将数据保存到数据库中。 您可以推荐哪些安全解决方案来避免中央服务器被黑客入侵?PHP跨域表单处理安全

解决的办法之一将是检查其中数据是从(我的网站)在正在添加IP /域名,如果它是一个不同的,然后封锁该IP。

你可以推荐什么其他解决办法?我认为Captcha在这里真的不行。

+1

是的,我认为你必须做一个IP限制,以避免跨域黑客,也许从你的网站添加一个哈希“密码”(在中央服务器检查它)执行的安全性。 – aleation

+0

张贴这个问题的最好的地方是security.stackexchange.com –

回答

0

的替代,更安全,解决办法是具有表单输入与应用程序的秘密只知道代理和接收器一起转发到你的中央web服务的每个网站上运行的服务器端代理脚本。

非常简单的实现(未经测试):

proxy.php

<?php 
$secret = '[RANDOMSTRING]' 
$webservice = 'https://www.yourhost.com/receiver.php' 
$formData = serialize($_POST); 
file_get_contents($webservice . '?secret=' . $secret . '&data=' . urlencode($formData)); 
?> 

receiver.php

<?php 
if ($_GET['secret'] == '[RANDOMSTRING]') { 
    $formData = unserialize($_GET['data']); 
} else { 
    // ignore 
} 

注:由于只有服务器到服务器沟通涉及(通过使用硬化https),窃听的风险是可以忽略的。

+1

-1,因为我不认为,因为这表示这将增加任何安全性可言,因为所有的ID需要做的是找到它并提交表单,检查在ajax会话中,以纯文本形式查看您的$ secret,然后使用reciever.php和我的调皮数据以及所说的秘密。告诫这将是,如果你有一个值得信赖的算法,可以产生每一次改变形式加载,这可以通过算法在reciever.php –

+1

被验证为可信的字符串@NicholasKing你看错了答案随机字符串。没有Ajax会话。请求是从PHP到PHP。没有涉及客户端通信。在这种情况下,侦听是很难做到的。 –

+0

如果它的一个web服务,我可以从我调皮的网站打电话给我,但我的观点依然存在。 –

2

如果你打算写一个简单的Web服务,你可以将操作设置为当前服务器,并让该服务器上的PHP脚本与中心数据库的Web服务进行通信。这样一来,你可以做认证你没有任何安全性并发症。