【问题标题】:handle the submission form from mutiple domains to remote server处理从多个域到远程服务器的提交表单
【发布时间】:2015-06-27 14:44:45
【问题描述】:

我被要求开发一个发送电子邮件的 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) 白名单匹配。这会是一个安全的解决方案吗?

【问题讨论】:

  • 您可以将表单数据发送到本地服务器,然后使用 cURL 将数据从本地服务器发送到远程服务器。这样,远程服务器就不会暴露给您的应用程序用户,您可以在后端添加额外的安全措施(例如添加可以在远程站点上验证的令牌或类似的东西)。
  • @jeromegamez 这实际上是一个完整的答案,而不是评论!把它作为一个答案,因为它确实解决了 OP 的问题。这也允许将特定 IP 列入远程服务器的白名单

标签: php cross-domain


【解决方案1】:

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

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

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

【讨论】:

  • 这是个好主意,但我被告知本地服务器不支持php,这就是为什么我不能在表单端使用php。
猜你喜欢
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
相关资源
最近更新 更多