gpt4 book ai didi

javascript - key 在 javascript 代码(JavaScript、Firebase)中可见吗?

转载 作者:行者123 更新时间:2023-11-28 19:15:39 25 4
gpt4 key购买 nike

我有一个函数,可以在使用自定义 token 进行身份验证之前检查密码和用户是否匹配。

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 token ,我使用 key 实例化 Firebase 类 FirebaseTokenGenerator。喜欢

function createToken(user) {
var tokenGenerator = new FirebaseTokenGenerator("<secret key...>");
var updatedObj = {
"uid": "custom:"+user,
"level": "docent"
}
return tokenGenerator.createToken(updatedObj);

但是,通过这种方式,任何查看 .js 源代码的人都可以看到 key 。我很确定这不是应该做的事情,但是正确的方法是什么,Firebase 方式?

编辑:

我试图找出 javascript 的方法,但卡在那里,所以切换回 php。使用来自 github ( here ) 的 firebase-token-generator 代码,使用 composer 在我的项目中安装它,包括依赖项一切似乎都工作正常( token 已生成)。

<?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;
?>

阅读本文SO post我发现以下是将其嵌入到我的 javascript 代码中的方法:

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);
});
};

但由于某种原因,当时没有生成 token 。当首先从 getUser 调用时,javascript createToken 函数的成功和错误部分根本不会执行(导致变量 token 的值未定义。然后 createToken 被第二次调用(??),然后执行成功部分但是现在的数据不包含 token ,而是包含完整的 php 脚本...?

问题是什么以及如何解决?

最佳答案

您应该避免在客户端浏览器中做任何“ secret ”的事情。在那里, secret 将是可见的,密码将可通过 XSS 破解并可嗅探,并且您可以使用某些 XSS 连接到任何用户。

您应该将这部分移到服务器端以更加安全,它可以是 NodeJS、PHP 或其他任何东西。 (显然是 HTTPS 连接)

关于javascript - key 在 javascript 代码(JavaScript、Firebase)中可见吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29912485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com