কীভাবে 41.0b1 + এ যাচাইকৃত ফায়ারফক্স এক্সটেনশনটি ইনস্টল করবেন?


15

ফায়ারফক্সের সর্বশেষ আপডেট (41.0b1) আক্রমণাত্মকভাবে যাচাই করা না হওয়া এক্সটেনশনগুলি, এইচটিটিপিএস এভরিওয়েস এবং গোপনীয়তা ব্যাজারের ইনস্টলেশনকে অবরুদ্ধ করে ।

আমি কীভাবে এই এক্সটেনশানগুলি ইনস্টল করতে বাধ্য করতে পারি? about:configআমি কি অস্থায়ীভাবে টগল করতে পারলাম ভিতরে কি সেটিং আছে ?

মজিলা ফায়ারফক্সে এই পরিবর্তনটিকে এখানে হাইলাইট করেছে , দূষিত এক্সটেনশানগুলিকে সংহত করার জন্য তার পূর্বের প্রচেষ্টাগুলি অকার্যকর বলে উল্লেখ করে।

উত্তর:


19

হ্যাঁ, এখানে একটি সেটিং রয়েছে About:config, এর নাম xpinstall.signatures.required। অগ্রাধিকার নামের উপর ডাবল ক্লিক করুন যাতে এর মানটি মিথ্যাতে সেট হয়ে যায়। এখন আপনি ফায়ারফক্সে স্বাক্ষরবিহীন এক্সটেনশনগুলি ইনস্টল করতে পারেন। একটি ব্রাউজার পুনঃসূচনা প্রয়োজন হয় না।


2
ফ্যান্টাস্টিক! EFF এবং অন্যান্যদের সেখানে এক্সটেনশন যাচাই করা না হওয়া অবধি এই ফিক্সটি যথেষ্ট।
ভিটামিনইস

1
এটি 43+ সংস্করণের পরেও কাজ করবে না। :(
সুরেশ আত্তা

অনেক সূত্র বলছে যে এটি সাম্প্রতিক এফএফটিতে কাজ করবে না, এটি লিনাক্সে 48.0 এ আমার জন্য কাজ করেছিল। আমাকে অ্যাডোনস পৃষ্ঠাটি খুলতে হয়েছিল এবং সেখানে এক্সপিআই ফাইলটি টানতে হয়েছিল।
ব্রাজিলিয়ান গাই

@ThatBrazilianGato: Win7 FF48.0 উপর :( আমার জন্য কাজ না করে করা হয়
glavić

4
এটা আমার জন্য। বাই ফায়ারফক্স, 0.6 সংস্করণ থেকে আপনাকে ভালবাসে। :-( আশা নেই একটি ওয়ার্কঅ্যারাউন্ড কিছু দিন হতে হবে।
আন্দ্রিয়াস

2

ফায়ারফক্স ৪৮ এবং তারপরে, এই পদ্ধতিটি কার্যকর হয় না। পরিবর্তে আপনার ফায়ারফক্স ডিরেক্টরিতে দুটি কনফিগার ফাইল তৈরি করা উচিত।

  1. তৈরি করুন config.js নোটপ্যাড ফাইল (নিশ্চিত ফাইল এক্সটেনশন হয় .js এবং .txt ):

    //
    try {
    Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {})
    .eval("SIGNED_TYPES.clear()");
    }
    catch(ex) {}
    
  2. আপনার ফায়ারফক্স ইনস্টলেশন ডিরেক্টরিতে config.js সরান :

    উইন্ডোজ: সি: \ প্রোগ্রাম ফাইলগুলি \ মজিলা ফায়ারফক্স
    (বা সি: \ প্রোগ্রাম ফাইল (x86) z মজিলা ফায়ারফক্স )

    লিনাক্স: / usr / lib64 / ফায়ারফক্স- <সংস্করণ>
    (বা / usr / lib / ফায়ারফক্স- <সংস্করণ>)

    ম্যাক: / অ্যাপ্লিকেশনস / ফায়ারফক্স.এপ

  3. নোটপ্যাডে কনফিগারেশন- prefs.js তৈরি করুন :

    pref("general.config.obscure_value", 0);
    pref("general.config.filename", "config.js");
    
  4. ফায়ারফক্স ডিফল্ট - প্রিফ ডিরেক্টরিতে কনফিগারেশন-প্রিফ.জেসগুলি সরান ।
    (যেমন সি: \ প্রোগ্রাম ফাইলগুলি z মজিলা ফায়ারফক্স \ ডিফল্ট \ প্রিফ )

  5. ফায়ারফক্স পুনরায় চালু করুন।

  6. ফায়ারফক্স উইন্ডোতে স্বাক্ষরবিহীন এক্সপিআই টেনে আনুন, বা ফায়ারফক্স অ্যাড-অন্সের সেটিংসে "ফাইল থেকে অ্যাড-অন ইনস্টল করুন" বিকল্পটি ব্যবহার করুন।


এই উত্স থেকে উত্স: https://forum.mozilla-russia.org/viewtopic.php?id=70326


দুর্ভাগ্যক্রমে এই পদ্ধতিটি এফএফ 66.0.3 64-বিটে কাজ করছে বলে মনে হচ্ছে না। মোজিলা বিআইজি সময় নষ্ট করে দিয়েছে, এখন এটির খুব প্রয়োজন হবে না।
কুলকুন

1

স্পষ্টতই ফায়ারফক্স 60০xpinstall.signatures.required এবং তারপরেও কনফিগারেশনের কৌশলগুলি উপরে বর্ণিত নয় (মজিলা, দয়া করে ওড়না করুন!)

উপরে উল্লিখিত রাশিয়ান ফোরামে স্পষ্টতই ফায়ারফক্সের এই সংস্করণগুলির একটি সমাধানের কথা উল্লেখ করেছে। সুতরাং এটির পরিবর্তে এটি কনফিগার.জেজে রাখুন যা আপনি পরে সি: \ প্রোগ্রাম ফাইলগুলি z মজিলা ফায়ারফক্সে সংরক্ষণ করেন

//
try {(code => {
    var {classes: Cc, interfaces: Ci, utils: Cu} = Components;
    var jsval, evl = true, re = e => Cu.reportError(e), imp = name => {try {
        return Cu.import(`resource://gre/modules/addons/${name}.jsm`, {});
    } catch(ex) {}}
    if ((jsval = imp("AddonSettings"))) {
        jsval.AddonSettings = {ADDON_SIGNING: false, REQUIRE_SIGNING: false, ALLOW_LEGACY_EXTENSIONS: true};
        try {evl = jsval.eval("this") === jsval;} catch(ex) {evl = false;}
    }
    var jsvals = ["XPIProvider", "XPIInstall"].map(imp).filter(i => i);
    jsvals[0].AddonSettings && lockPref("extensions.allow-non-mpc-extensions", true);
    jsvals[0].signaturesNotRequired = true;

    if (evl) return jsvals.forEach(jsval => {try {jsval.eval(code);} catch(ex) {re(ex);}});

    var sl = Cc["@mozilla.org/moz/jssubscript-loader;1"].getService(Ci.mozIJSSubScriptLoader);
    Cu.importGlobalProperties(["URL", "Blob"]); var url = URL.createObjectURL(new Blob([(code)]));
    jsvals.forEach(jsval => {try {sl.loadSubScript(url, jsval);} catch(ex) {re(ex);}});

})(String.raw`((vzss, pckg) => {
    var trueDesc = {enumerable: true, value: true};
    typeof Extension == "function" && Object.defineProperty(Extension.prototype, "experimentsAllowed", trueDesc);
    "AddonInternal" in this && Object.defineProperty(AddonInternal.prototype, "providesUpdatesSecurely", trueDesc);
    this.isDisabledLegacy = () => false;
    if ("XPIDatabase" in this) this.XPIDatabase.isDisabledLegacy = () => false;
    try {SIGNED_TYPES.clear();} catch(ex) {};

    if (!vzss && !pckg) return;

    var re = /\x06\x03U\x04\x03..(\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}|[a-z0-9-\._]*\@[a-z0-9-\._]+)0\x82\x02"0\r\x06\t/i;
    var getUUID = () => {
        var gen = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator);
        return (getUUID = () => gen.generateUUID().toString())();
    }
    var getIdFromString = str => {
        var match = str && str.match(re);
        return match ? match[1] : getUUID();
    }
    var getState = arg => ({
        signedState: AddonManager.SIGNEDSTATE_NOT_REQUIRED,
        cert: typeof arg == "object" ? arg : {commonName: arg}
    });
    var checkAddon = addon => {
        if (addon.id || (
            "_installLocation" in addon
                ? addon._installLocation.name == KEY_APP_TEMPORARY
                : addon.location.isTemporary
        ))
            return getState(null);
    }
    var getRoot = () =>
        !AppConstants.MOZ_REQUIRE_SIGNING && Services.prefs.getBoolPref(PREF_XPI_SIGNATURES_DEV_ROOT, false)
            ? Ci.nsIX509CertDB.AddonsStageRoot : Ci.nsIX509CertDB.AddonsPublicRoot;

    if (vzss) {
        var getURI = file => {
            var jsval = Cu.import("resource://gre/modules/addons/XPIProvider.jsm", {});
            return (getURI = file => jsval.getURIForResourceInFile(file, "META-INF/mozilla.rsa"))(file);
        }
        var getIdFromFile = file => {
            var str, is = {close() {}}, sis = {close() {}};
            try {
                is = Services.io.newChannelFromURIWithLoadInfo(getURI(file), null).open();
                sis = Cc["@mozilla.org/scriptableinputstream;1"].createInstance(Ci.nsIScriptableInputStream);
                sis.init(is);
                str = sis.readBytes(sis.available());
            } catch(ex) {}
            sis.close(); is.close();
            return getIdFromString(str);
        }
        this.verifyZipSignedState = function verifyZipSignedState(aFile, aAddon) {
            var res = checkAddon(aAddon);
            return res ? Promise.resolve(res) : new Promise(resolve => {
                var callback = {openSignedAppFileFinished(rv, zipReader, cert) {
                    zipReader && zipReader.close();
                    resolve(getState(cert || getIdFromFile(aFile)));
                }};
                gCertDB.openSignedAppFileAsync(getRoot(), aFile, callback.wrappedJSObject = callback);
            });
        }
    }

    if (pckg) Package.prototype.verifySignedState = function verifySignedState(addon) {
        var res = checkAddon(addon);
        return res ? Promise.resolve(res) : new Promise(resolve =>
            this.verifySignedStateForRoot(addon, getRoot()).then(({cert}) => {
                if (cert)
                    resolve(getState(cert));
                else
                    this.readBinary("META-INF", "mozilla.rsa").then(
                        buffer => resolve(getState(
                            getIdFromString(String.fromCharCode(...new Uint8Array(buffer)))
                        )),
                        () => resolve(getState(getUUID()))
                    );
            }, Cu.reportError)
        );
    }
})(
    "verifyZipSignedState" in this, typeof Package == "function"
);`)} catch(err) {
    err.message != "Components is not defined" && Components.utils.reportError(err);
}

তারপরে আপনাকে এটি সি: \ প্রোগ্রাম ফাইলস \ মজিলা ফায়ারফক্স \ ডিফল্টস \ প্রিফ -তে সংরক্ষণ করা কনফিগারেশন-প্রিফ.এসএস ফাইলগুলিতে যুক্ত করতে হবে file

pref("general.config.obscure_value", 0);
pref("general.config.filename", "config.js");
pref("general.config.sandbox_enabled", false);

এফএফ 66.0.3 এ কাজ করার জন্য এটি পরীক্ষা করা হয়েছে। দুর্ভাগ্যক্রমে এটি আপনার অ্যাডন এবং থিমগুলিকে যাদুকরীভাবে ফিরিয়ে আনবে না, তবে কমপক্ষে এটি পুনরায় ইনস্টল করার বিকল্পটিকে পুনরায় সক্ষম করে। মজিলাকে যেভাবেই অফার করা উচিত তার চেয়ে ভাল, কারণ তাদের ফোরামে এই সমস্যা সম্পর্কে অভিযোগ ভরাট করা সত্ত্বেও তারা বিশেষভাবে যত্ন নেবে বলে মনে হয় না।


দেখুন, আপনি যদি সত্যিই এটি চান তবে এলোমেলো হ্যাকগুলি ইনস্টল করবেন না, এমন একটি নাইটলি ব্যবহার করুন যেখানে স্বাক্ষরগুলি re প্রয়োজনীয় পছন্দসই স্ট্রিংটি আসলে সক্ষম করা আছে।
ফলিক্স সাপারেলি

1
আর কেন করব? এখন অবধি আমি এফএফ এর স্থিতিশীল সংস্করণ বলে মনে করেছি যা ব্যবহার করে আমি পুরোপুরি ঠিক ছিলাম যেখানে আমি কেবল ফায়ারফক্সের অফিসিয়াল অ্যাডন সাইট থেকে বৈধ এবং জেনুইন অ্যাডনগুলি ইনস্টল করেছি। এবং এখন এই সমস্ত অ্যাডনগুলি (এবং থিমস, খ্রিস্টের পক্ষে!) হঠাৎ করে কাজ বন্ধ করে দিয়েছে। আমি দুঃখিত তবে এফএফ এর সম্ভাব্য এমনকি আরও ভাঙা সংস্করণ ইনস্টল করার পরিবর্তে আমি এমন কিছু পছন্দ করি যা এর পরিবর্তে আমার বর্তমান ইনস্টলেশন কাজ করে।
কুলকুন

পিএস অ্যাডনগুলি আমার ফোনে চলমান এফএফ (v66.0.2) এর অ্যান্ড্রয়েড সংস্করণে কাজ করা বন্ধ করে দিয়েছে, তবে কৌতূহলতার সাথে xpinstall.signatures.requiredএখনও সেখানে কাজ করতে দেখা যাচ্ছে।
কুলকুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.