Как я могу использовать объект приложения для безопасного просмотра, чтобы определить, указывается ли 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.