PHP跨域表单处理安全性

时间:2012-11-26 10:02:51

标签: php forms security cross-domain captcha

我有几个网站提供电子邮件注册表单。我想在不同的服务器上填充中央数据库,然后填写这些网站。 我正在考虑将表单的action属性设置为中央数据库服务器上的webservice。该Web服务可以简单地将数据保存到数据库中。 您可以推荐哪些安全解决方案来避免黑客攻击/充斥中央服务器?

其中一个解决方案是检查数据来自的IP /域(我的网站),如果是另一个,则阻止该IP。

您可以推荐哪些其他解决方案?我认为Captcha在这里不会真正起作用。

2 个答案:

答案 0 :(得分:2)

如果要编写简单的Web服务,只需将操作设置为当前服务器,然后让该服务器上的PHP脚本与中央数据库的Web服务进行通信。这样,您就可以进行身份​​验证,您没有任何安全问题。

答案 1 :(得分: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强化),窃听的风险可以忽略不计。