Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript代码(javascript、Firebase)中可见的密钥?_Javascript_Firebase Security - Fatal编程技术网

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