我正在建立一个允许用户通过谷歌登录的网站,我需要能够将名称,电子邮件和用户图像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。如何阻止用户输入无效信息?
注意:如果需要,我愿意学习将客户端信息发送到服务器的其他方法。此外,我无权访问命令行。
答案 0 :(得分:2)
您可以使用Javascript,但只会将Google令牌发送给您的PHP脚本。
仅供参考,令牌在这里:googleUser.getAuthResponse()。id_token;
在您的PHP脚本中,使用Google php API客户端库:https://developers.google.com/api-client-library/php/auth/web-app
验证令牌,检索用户信息&将其保存在您的数据库中。