Как я могу использовать объект приложения для безопасного просмотра, чтобы определить, указывается ли URL-адрес как фишинговый или вредоносный сайт?

Вот фрагмент кода:

Components.classes['@mozilla.org/safebrowsing/application;1']
    .getService().wrappedJSObject.malwareWarden.listManager_
    .safeLookup(test_url, function(tableName){
        if (tableName == 'goog-phish-shavar' || tableNmae == 'goog-malware-shavar') {
            alert('This is reported by Google! ');
        };
});

Это работает нормально, но я не думаю, что это "правильный" путь...

Что если пользователь изменит DataProvider?

1 ответ

Решение

Доступ к любым методам или свойствам объекта XPCOM с использованием wrappedJSObject является проблемой, ожидающей своего появления. Все, к чему осуществляется доступ через wrappedJSObject, считается "частными" данными и методами, которые могут быть взломаны в будущих версиях. Постарайся избежать этого.

Хорошая новость заключается в том, что listManager сам по себе является глобальным сервисом XPCOM. Доступ к нему напрямую с помощью:

 var Cc = Components.classes;
 var Ci = Components.interfaces;
 var listManager = Cc ["@ mozilla.org/url-classifier/listmanager;1"].getService(Ci.nsIUrlListManager);

Что касается смены поставщика данных, то для этого потребуется значительное количество изменений кода в Firefox. Если это произойдет, мы надеемся также добавить некоторые методы управления в XPCOM.

Другие вопросы по тегам