从另一台服务器安全地从JS发送到PHP

时间:2016-03-27 12:36:06

标签: javascript php

我想将我的域名中的JS信息安全地发送到另一个域中的.php文件,我希望.php只能来自指定域名。

这是域A

  $.ajax({
  POST: "https://domain-b.com/ant.php",
  data: mystring
})

这是域B

 <?php 
for ($i=0;$i<count($_POST);$i++){
       #send to DB code 
    }
    ?>

BTW域A和域B都是单独的服务器。 我的理解是因为我使用HTTPS安全和加密发送的数据,但我发现任何人都可以从任何地方向.php域发送信息。我想防止这种情况。 我想在两者之间插入代码就像密码一样,但是当我在JS中插入它时,任何人都可以看到它,所以没有用它。

2 个答案:

答案 0 :(得分:1)

是的,使用https会加密数据。

要查看请求声称来自哪里,您可以查看$_SERVER['HTTP_REFERER']但这可能是欺骗性的,并且不可靠。

我会使用PHP会话。服务器A设置会话ID。然后,服务器B可以从请求中读取会话ID,以验证用户是否来自服务器A.多个服务器可以共享会话数据。见How to manage a single PHP5 session on multiple apache servers?

答案 1 :(得分:0)

当您从服务器发送帖子请求时。尝试在数据中发送密钥。并且仅在密钥匹配时运行DB代码。

<?php $_SESSION['key'] = md5(uniqid());
<input type="hidden" value="<?php echo $_SESSION['key']; ?>" name="key">

每次用户刷新页面时都会生成一个新的密钥。并且它将因用户而异。

$.ajax({
POST: "https://domain-b.com/ant.php",
 Data: mystring // contains secret key
})

php服务器

<?php 
$Key //your secret key
if($_SESSION['key'] == key in form data){
  for ($i=0;$i<count($_POST);$i++){
   #send to DB code 
  }
}
?>

如果我正确理解了这个问题。这应该是有帮助的:)