安全地将AJAX值传递给PHP

时间:2018-04-05 15:30:43

标签: php ajax validation security

我正在建立一个允许用户通过谷歌登录的网站,我需要能够将名称,电子邮件和用户图像URL发送到服务器。我目前正在使用AJAX来执行此操作。以下是我使用的功能:

function onSignIn(googleUser){
  var profile = googleUser.getBasicProfile();
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if(this.readyState == 4 && this.status == 200){
      document.getElementById('php').innerHTML = this.responseText;
    }
  };
  xhttp.open('POST', "google_sign_in.php", true);
  xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xhttp.send('name=' + profile.getName() + '&image=' + profile.getImageUrl() + '&email=' + profile.getEmail());
}

这会将所有信息发送到服务器。没有什么可以阻止用户使用Web检测工具(如Firebug)将xhttp.send函数中的值更改为:

xhttp.send(name=fakename&imagefakeimg.jpg&email=fake@information.com);

我做了一些阅读并得出结论,我永远不应该依赖客户端安全性(试图阻止Web检查员),并应该进行更多的服务器端验证。

我可以访问HTML,CSS,JS和PHP。如何阻止用户输入无效信息?

注意:如果需要,我愿意学习将客户端信息发送到服务器的其他方法。此外,我无权访问命令行。

1 个答案:

答案 0 :(得分:2)

您可以使用Javascript,但只会将Google令牌发送给您的PHP脚本。

仅供参考,令牌在这里:googleUser.getAuthResponse()。id_token;

在您的PHP脚本中,使用Google php API客户端库:https://developers.google.com/api-client-library/php/auth/web-app

验证令牌,检索用户信息&将其保存在您的数据库中。