Область применения Javascript / проблема безопасности в расширении Firefox - PullRequest
2 голосов
/ 10 мая 2011

Я разрабатываю расширение FireFox и должен хранить некоторые значения, которые мне нужны, чтобы они были безопасными и недоступными для любого другого расширения / страницы и т. Д.

Я использую настройку для моего кода расширения, как показано здесь:

if(!namesp) var namesp={};
if(!namesp.anothernamesp) namesp.anothernamesp={};

namesp.anothernamesp = function() {
  var mySecureValue = ''; //is this variable accessible from anything aside from inside the namesp.anothernamesp scope?

  return {
    useSecureValue: function() {
    //do something here with mySecureValue
    }
  };

  function getSecureValue() { //can this method be called from anywhere besides inside the namesp.anothernamesp scope?
    return mySecureValue;
  }

}();

Есть ли способ, которым что-либо, кроме моего собственного расширения, может получить доступ к mySecureValue? Чтобы сделать этот объект глобальным доступным для любых окон, которые я могу открыть в своем расширении и т. Д., Я передаю объект в окно в методе window.openDialog () и использую window.arguments для доступа к нему из вновь созданных окон. Спасибо.

Ответы [ 2 ]

1 голос
/ 10 мая 2011

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

0 голосов
/ 17 марта 2013

Нет , невозможно Вы можете не допустить воздействия одного расширения на другое расширение.

Причины этого:

  • расширения - это файлы Zip-архива, переименованные с расширением * .xpi.
  • расширения записываются в виде текстовых файлов с использованием диалекта JavaScript
  • Любое другое расширение может по желанию открыть и получить доступ к любому файлу, к которому может получить доступ ваш браузер.

Если какое-то другое расширение хочет прочитать вашу переменную mySecureValue, оно может сделать это:

  • доступ к файлу расширений * .xpi (используя nsIFile для чтения его из папки profile/extensions)
  • распаковать его nsIZipReader
  • читать переменную mySecureValue из вашего исходного файла!

Наиболее печальной причиной всего этого является то, что Mozilla Firefox не реализует никакой формы правильного разделения между расширениями. Каждое расширение может сделать все для всех. Он может даже исключить шелл-код и наносить произвольный ущерб.

Единственное, что вы можете попробовать - это запутать ваши секретные данные. Это, однако, не помешает, а, возможно, только усложнит атаку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...