Вопрос

У меня вопрос о защищенной памяти JavaScript. Если у меня есть функция, сделанная подобная это:

var obj = function(){
    var secret = "secret",
        super_secret = "my super secret string";   
    return {
        get_secret: function() {
            return secret;
        }()
    }
}();

Можно ли получить строку из Super_Secret любыми средствами?

Я видел некоторую эксплуатацию, который использовал бросок () и ошибку (), чтобы получить переменную вне функции. Однако это не было сделано с закрытием. Все входные и «грешники» очень приветствуются. Я планирую проект, где мне нужно быть уверенным, что нет никакого известного способа извлечения или модификации переменной Super_Secret.

Это было полезно?

Решение

Там почти нет способа сделать это. Даже если вы загружаете данные с некоторых серверов, которые не находятся на странице, чтобы начать, я могу легко открыть Firebug и начните отладку, чтобы найти значение. Если вы должны иметь безопасность, то не подвергайте данные. Даже шифрование данных не поможет, потому что ключ, вероятно, будет где-то в JavaScript.

Может быть, если вы поделитесь тому, что ваша проблема тогда мы можем подумать о лучшем решении. JavaScript, вероятно, не ваш лучший вариант здесь.

Редактировать, используя отладчик, вы можете сделать что-нибудь! Вот скриншотalt text

Другие советы

Предполагая, что это будет в конечном итоге работать в браузере, кто-то может просто просматривать источник и скопировать - вставить его (вы говорили «любые средства» :-).

Кроме того, если кто-то может получить произвольный JavaScript для работы на вашем сайте, сохраняя ключ в секрете, является наименьшим количеством ваших проблем.

Единственное, что вы можете сделать, это шифруйте и расшифруете Super_Secret, Server-Side. Если вы отправляете незашифрованные данные клиенту или предоставьте его средства для расшифровки ваших данных, ваши данные доступны клиенту, и вы не должны полагаться на его скрытие.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top