在javascript代码(javascript、Firebase)中可见的密钥?
我有一个功能,在使用自定义令牌进行身份验证之前检查密码和用户是否匹配在javascript代码(javascript、Firebase)中可见的密钥?,javascript,firebase-security,Javascript,Firebase Security,我有一个功能,在使用自定义令牌进行身份验证之前检查密码和用户是否匹配 function getUser(user, password) { var usersRef = new Firebase("mydatabase/users"); var userRef = usersRef.child(user); userRef.once("value", function getHandler(snapshot) { if (snap
function getUser(user, password) {
var usersRef = new Firebase("mydatabase/users");
var userRef = usersRef.child(user);
userRef.once("value",
function getHandler(snapshot) {
if (snapshot.val().password == password) {
var token = createToken(user);
ref.authWithCustomToken(token, authHandler);
} else {
alert("Gebruikersnaam en code komen niet overeen");
}
},
function errorHandler(errorObject) {
alert("Ophalen van gebruikersgegevens is mislukt: " + errorObject.code);
}
);
}
为了创建e令牌,我用密钥实例化firebase类FirebaseTokenGenerator。像
function createToken(user) {
var tokenGenerator = new FirebaseTokenGenerator("<secret key...>");
var updatedObj = {
"uid": "custom:"+user,
"level": "docent"
}
return tokenGenerator.createToken(updatedObj);
但由于som原因,此时不生成令牌。当最初从getUser调用时,javascript createToken函数的成功和错误部分根本不执行(导致变量token的值未定义。然后第二次调用createToken(?),然后执行成功部分,但是数据现在不包含token,而是包含完整的php脚本
问题是什么以及如何解决?您应该避免在客户端浏览器中执行任何“机密”操作。在客户端浏览器中,机密将是可见的,密码将通过XSS进行黑客攻击并可嗅探,您可以使用某些XSS连接到任何用户
您更应该将此部分移动到服务器端,以便更安全,它可以是NodeJS、PHP或其他任何东西您应该避免在客户端浏览器中执行任何“机密”操作。在客户端浏览器中,机密将可见,密码可以通过XSS进行黑客攻击并可嗅探,您可以使用某些XSS连接到任何用户
您更应该将此部分移动到服务器端,以便更安全,它可以是NodeJS、PHP或其他任何东西您应该避免在客户端浏览器中执行任何“机密”操作。在客户端浏览器中,机密将可见,密码可以通过XSS进行黑客攻击并可嗅探,您可以使用某些XSS连接到任何用户
您更应该将此部分移动到服务器端,以便更安全,它可以是NodeJS、PHP或其他任何东西您应该避免在客户端浏览器中执行任何“机密”操作。在客户端浏览器中,机密将可见,密码可以通过XSS进行黑客攻击并可嗅探,您可以使用某些XSS连接到任何用户
您更应该将此部分移动到服务器端,以便更安全,它可以是NodeJS、PHP或其他任何东西您必须在服务器端应用程序中执行此操作,并将生成的令牌发送到客户端应用程序。令牌也应通过HTTPS发送。默认令牌到期时间为24小时。这可以更改。您必须在服务器端应用程序中执行此操作,并将生成的令牌发送到客户端应用程序。令牌应通过HTT发送PS也是。默认令牌到期时间为24小时。这是可以更改的。您必须在服务器端应用程序中执行此操作,并将生成的令牌发送到客户端应用程序。令牌也应通过HTTPS发送。默认令牌到期时间为24小时。这是可以更改的。您必须在服务器端应用程序中执行此操作并发送ge为您的客户端应用程序生成令牌。令牌也应通过HTTPS发送。默认令牌到期时间为24小时。这是可以更改的。任何类型的javascript验证都是不安全的,因为正如您所说,任何人都可以查看或编辑javascript客户端。正确的方法是使用php,它是服务器端且安全的。我相信您其他的一切都做得很正确。@ViperCode PHP是服务器端的,是的。安全吗?呃。它的安全性取决于您编写它的目的,而且它不一定是PHP。任何类型的javascript验证都是不安全的,因为正如您所说,任何人都可以查看或编辑javascript客户端。正确的方法是使用PHP,即server端和安全。不过我相信你做的其他一切都是正确的。@ViperCode PHP是服务器端的,是吗?安全?呃。它的安全性取决于你编写它的目的,不一定是PHP。任何类型的javascript验证都是不安全的,因为正如你所说,任何人都可以查看或编辑javascript客户端。正确的方法是这样做的将使用php,它是服务器端和安全的。但是我相信您在其他方面都做得很正确。@ViperCode php是服务器端,是的。安全吗?呃。它的安全性取决于您编写它的目的,并且它不必一定是php。任何类型的javascript验证都是不安全的,因为正如您所说的,任何人都可以查看或编辑javascript客户端nt端。正确的方法是使用php,它是服务器端和安全的。但是我相信你做的其他一切都是正确的。@ViperCode php是服务器端,是的。安全吗?呃。它和你编写它的目的一样安全,不一定是php。你能告诉我使用nodeJS(坚持JavaScript)时代码会是什么样子吗在firebase托管的应用程序上?我想代码本身不会有太大的不同,但我不知道如何确保代码在服务器端执行(使用NodeJS)。我如何做到这一点?在NodeJS上,您将拥有一个express服务器。然后使用a来拒绝未经授权的客户端。我尝试过这样做,但被卡住并切换回php。请查看我遇到的问题的问题编辑?我在本地服务器和远程(firebase)服务器上尝试过,都是相同的问题。您能告诉我使用NodeJS时代码是什么样子吗(坚持使用JavaScript)在firebase托管的应用程序上?我想代码本身不会有太大的不同,但我不知道如何确保代码在服务器端执行(使用NodeJS)。我如何做到这一点?在NodeJS上,您将拥有一个express服务器。然后使用a来拒绝未经授权的客户端。我尝试过这样做,但被卡住并切换回php。请查看我遇到的问题的问题编辑?我在本地服务器和远程(firebase)服务器上尝试过,都是相同的问题。您能告诉我使用NodeJS时代码是什么样子吗(坚持使用JavaScript)在firebase托管的应用程序上?我想代码本身不会有太大的不同,但我不知道如何确保代码在服务器端执行(使用NodeJS)。我如何做到这一点?在NodeJS上,您将有一个express服务器。然后使用拒绝未经授权的客户端。我尝试了
<?php
include_once "FirebaseToken.php";
$uid = $_POST['uid'];
$level = $_POST['level'];
$tokenGen = new Services_FirebaseTokenGenerator("<secret key>");
$token = $tokenGen->createToken(array("uid" => "custom:BAAJ"), array("admin" => False));
echo $token;
?>
function createToken(user) {
$.post('php/createtoken.php', {uid: user, level: 'docent'}, function(data){
//successful ajax request
return data;
}).error(function(error){
alert("Create token mislukt: "+error);
});
};