Evitar que os usuários possam alterar variáveis JavaScript

2

É possível de alguma forma impedir que os usuários possam alterar as variáveis JavaScript, através da barra de endereços ou com programas como o FireBug?

    
por paldepind 19.04.2010 / 17:59

5 respostas

10

JavaScript é um código fonte bruto sendo interpretado na máquina do cliente, portanto, a resposta curta é não. O melhor que você poderia realizar o máximo de trabalho possível no servidor. Qualquer código JavaScript que você enviar para o cliente pode ser adulterado pelo cliente.

    
por 19.04.2010 / 18:09
3

Esta é uma daquelas perguntas que praticamente implora a resposta "Qual é o seu objetivo final?"

Como afirmado por outros, não, você não pode. JavaScript é o lado do cliente tão inteiramente nas mãos do cliente, não você.

A ofuscação, como menciona heavyd, pode ser útil, mas certamente não é uma maneira segura / segura de evitar isso.

Se isso é algo que você precisa por razões de segurança, então a resposta é que provavelmente não deveria ser feito com JavaScript do lado do cliente em primeiro lugar.

    
por 19.04.2010 / 20:14
2

Você pode criar variáveis privadas e usar um método de acesso para acessá-las

var mySingleton = function(){

    /* here are my private variables and methods */

    var privateVariable = 'something private';

    function showPrivate(){

        console.log(privateVariable);

    }



    /* public variables and methods (which can access private variables and methods ) */

    return {

        publicMethod:function(){

            showPrivate();

        },

        publicVar:'the public can see this!'

    }

}

var single = mySingleton();

single.publicMethod();  // logs 'something private'

console.log(single.publicVar); // logs 'the public can see this!'
    
por 14.07.2011 / 17:44
1

Não, mas você pode ofuscar seu código para dificultar a leitura e engenharia reversa.

    
por 19.04.2010 / 18:32
0

Eu adicionarei meus 2 centavos para os usuários que encontrarem essa página no google.

Use Object.freeze () ou Object.seal () para bloquear um objeto.
< em> Lembre-se : 'Quase' tudo em javascript é um objeto.
Uso :

var myVariable = {"key1":50};
Object.freeze(myVariable);
myVariable.key1 = 100;//Modifying the value
console.table(myVariable);//Still gives value as 50, rather than 100

Além disso, esses métodos são irreversíveis . Portanto, um usuário não pode apenas liberar ou descongelar um objeto. Embora, o usuário possa redefinir a variável para um novo objeto em si.

    
por 20.08.2018 / 10:07