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

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

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 Ответ

3 голосов
/ 21 апреля 2011

Доступ к любым методам или свойствам объекта 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.

...