处理从多个域到远程服务器的提交表单

时间:2015-04-20 18:09:33

标签: php cross-domain

我被要求开发一个发送电子邮件的php rest api,api将托管在远程服务器上。他们有多个站点(登陆页面)和简单的html + JS,这些站点由于某种原因我们不能包含任何服务器端脚本。我们想在表单的动作中添加url

<form action= "http://remotesite/api/submit.php" method="post" >

我计划限制api使用类似的东西接收来自特定域(我们的客户)的请求

$http_origin = $_SERVER['HTTP_ORIGIN'];

if ($http_origin == "http://www.domain1.com" || $http_origin == "http://www.domain2.com" || $http_origin == "http://www.domain3.info")
{  
    header("Access-Control-Allow-Origin: $http_origin");
} 

但我读过可以修改请求来源信息。如果不在表单页面中使用服务器端语言,是否有我想要做的安全解决方案?

- 我正在考虑使用$_SERVER["REMOTE_ADDR"]获取源ip,并在远程端使用白名单ip(s)进行匹配。这是一个安全的解决方案吗?

1 个答案:

答案 0 :(得分:0)

您可以将表单数据发送到本地服务器,然后使用cURL将数据从本地服务器发送到远程服务器。

这样,远程服务器不会向您的应用程序用户公开,您可以在后端添加其他安全措施(例如添加可以在远程站点上验证的令牌或类似的东西)。

正如@Patrick所说,这也允许您将远程服务器代码中的本地服务器IP列入白名单。