Uzaktan barındırılan kod ihlallerini giderme

Uzaktan barındırılan kod veya RHC, Chrome Web Mağazası'nın farklı bir yerden yüklenen tarayıcı tarafından yürütülür: kendi dosyalarını kaydeder. JavaScript ve WASM gibi uygulamalar. Şunları içermez: veya JSON ya da CSS gibi özellikler vardır.

RHC'ye artık neden izin verilmiyor?

Manifest V3 uzantılarının, artık kullandıkları tüm kodu bir araya getirmeleri gerekiyor. yapabilirsiniz. Önceden, komut dosyası etiketlerini oluşturabilirsiniz.

Uzantımda RHC olduğu söylendi. Neler oluyor?

Uzantınız inceleme sırasında Mavi Argon hatasıyla reddedildiyse İnceleme ekibimiz, uzantınızın uzaktan barındırılan kod kullandığını düşünüyor. Bu genellikle bir uzantının uzaktan kumandayla komut dosyası etiketi eklemeye çalışmasından kaynaklanır kaynağındaki dosyalardan (ör. açık web'den) uzantısı) ya da doğrudan yürütülecek bir kaynağı getirmek.

RHC nasıl tespit edilir?

Neye bakmanız gerektiğini bildiğinizde RHC'yi tespit etmek özellikle zor değildir. İlk olarak, "http://" dizelerini kontrol edin veya "https://" bilmek kadar harika bir his yok. Bir RHC ihlali varsa büyük olasılıkla bunu bularak bulabilirsiniz. Eğer tam derleme sisteminiz varsa veya npm ya da üçüncü taraf taraf kaynaklarını kullanıyorsanız kodun derlenmiş sürümünü aradığınızdan emin olun. Çünkü mağaza bu değeri değerlendiriyor. Hâlâ bu mesajı sorunu bulduğunuzda sonraki adım Tek Noktadan Destek ile iletişime geçmektir. Onlar ihlallerin ana hatlarını belirleyebilir ve politika ihlalini önlemek için uzantısı en kısa sürede yayınlanır.

Bir kitaplık kod istiyorsa ne yapmalısınız?

Kodun nereden geldiğine bakılmaksızın RHC'ye izin verilmez. Bu kod, yazmadığınız bir kodu içerir, ancak belirler. Firebase kullanan bazı geliştiriciler, uzaktan çalışırken bu sorunu yaşadılar. kodu Firebase Auth'ta kullanılmak üzere ekleniyordu. Bu bir kitaplığını sunar. RHC için herhangi bir istisna yapılmaz. İhtiyacınız olanlar veya başlangıç kodunu ekleyin. Sorunun size ait olmadığı bir sorunla karşılaşırsanız aynı şey RHC'yi yüklüyor ancak kullandığınız bir kitaplıksa kütüphanenin yazarıyla iletişim kurmak. Durumu onlara bildirin, ve kaldırmak için geçici bir çözüm veya kod güncellemelerini isteyin.

Kitaplık güncellemesini bekleyemiyorsanız ne olacak?

Bazı kitaplıklar, bildirim alındıktan hemen sonra bir güncelleme gönderir, ancak diğer kullanıcılar terk edilebilir veya sorunun ele alınması zaman alabilir. Neye bağlı olarak söz konusu ihlalin gerçekleştiği durumsa, ihlalin ihlal edilmesini bir engeli kaldırmak ve başarılı bir inceleme gerçekleştirmek için harekete geçme. Paydaşlarla toplantı yaparken hızlı bir şekilde yeniden çalışmaya başlaması için kullanabileceğiniz seçeneklerdir.

Kodu denetleyin

İsteğe neden olan kodun gerekli olduğundan emin misiniz? Yapabiliyorsa Kaldırılmasına neden olan bir kitaplık olup olmadığını belirleyip işlem tamamlanmış olur.

Alternatif olarak, aynı özellikleri sunan başka bir kitaplık var mı? Dene yerine getiren diğer seçenekler için npmjs.com, GitHub veya diğer siteleri kontrol edin ortaya çıkarmasını sağlamaya yardımcı olur.

Ağaç sallama

RHC ihlaline neden olan kod gerçekten kullanılmıyorsa araçlar kullanılarak otomatik olarak silinebilir. Modern derleme araçları: webpack, Rollup ve Vite'ın (birkaç örnek) öne çıkan özellikleri bulunuyor. ağaç sallama adı verilir. Derleme sisteminizde etkinleştirildikten sonra ağaç sallama kullanılmayan kod yollarını kaldırın. Bu, yalnızca yeterli düzeyde bilgi sahibi olmakla aynı zamanda daha yalın ve hızlı bir sürümü haline getirir. Bu, tüm kitaplıklarda ağaçların sarsılamayacağını, ancak çoğunun aynı olduğunu unutmayın. Biraz Rollup ve Vite gibi araçlarda ağaç sallama varsayılan olarak etkindir. web paketi etkinleştirilmesi için yapılandırılması gerekir. Derleme kullanmıyorsanız sisteminiz varsa ancak kod kitaplıkları kullanıyorsanız iş akışınıza bir oluşturma aracı eklemeyi araştırmanızı kesinlikle öneririz. Derleme araçlar daha güvenli, güvenilir ve sürdürülebilir projeler yazmanıza yardımcı olur.

Ağaç sallama sürecinin nasıl uygulanacağı, ilgili projenize bağlıdır. Rollup ile ilgili basit bir örnek vermek gerekirse, ve proje kodunuzu derlemelisiniz. Örneğin, sadece giriş yapılan bir dosyanız varsa main.js adlı Firebase Auth:

import { GoogleAuthProvider, initializeAuth } from "firebase/auth";

chrome.identity.getAuthToken({ 'interactive': true }, async (token) => {
  const credential = GoogleAuthProvider.credential(null, token);
  try {
    const app = initializeApp({ ... });
    const auth = initializeAuth(app, { popupRedirectResolver: undefined, persistence: indexDBLocalPersistence });
    const { user } = await auth.signInWithCredential(credential)
    console.log(user)
  } catch (e) {
    console.error(error);
  }
});

Bu durumda tek yapmanız gereken, Rollup'a giriş dosyasını söylemektir. Bu eklenti, @rollup/plugin-node-resolve düğüm dosyalarını ve çıkışın adını yükleyin. dosyasıdır.

npx rollup --input main.js --plugin '@rollup/plugin-node-resolve' --file compiled.js

Bu komutu bir terminal penceresinde çalıştırdığınızda, oluşturulan bir sürüm alırsınız compiled.js adlı tek bir dosyada derlenen main.js dosyamızı inceleyebilirsiniz.

Toplayıcı mülk basit olduğu kadar çok yapılandırılabilir. Her tür öğeyi ekleyebilirsiniz karmaşık mantık ve yapılandırma hakkında dokümanlara göz atabilirsiniz. Bunun gibi derleme araçları eklemek, daha küçük ve daha verimli bir kod elde etmenizi sağlar. ve bu örnekte, uzaktan barındırılan kod sorunumuzu düzeltir.

Dosyaları otomatik olarak düzenleme

Uzaktan barındırılan kodların kod tabanınıza girmek için kullanılması giderek yaygınlaşan bir yöntem alt bağımlılığı olarak kullanabilirsiniz. X kitaplığı şunu yapmak istiyorsa: CDN'den import kitaplığını Y şu şekilde güncellemeniz gerekir: yerel bir kaynaktan yüklenir. Modern derleme sistemleriyle, istediğiniz her şeyi eklentilerini kullanabilirsiniz.

Bu durum, aşağıdaki gibi görünen kod anlamına gelir:

import moment from "https://unpkg.com/moment@2.29.4/moment.js"
console.log(moment())

Küçük bir toplayıcı eklenti oluşturabilirsiniz.

import { existsSync } from 'fs';
import fetch from 'node-fetch';

export default {
  plugins: [{
    load: async function transform(id, options, outputOptions) {
      // this code runs over all of out javascript, so we check every import
      // to see if it resolves as a local file, if that fails, we grab it from
      // the network using fetch, and return the contents of that file directly inline
      if (!existsSync(id)) {
        const response = await fetch(id);
        const code = await response.text();

        return code
      }
      return null
    }
  }]
};

Derlemeyi yeni eklentiyle çalıştırdıktan sonra, her uzak import URL'si bir bağımlılığın veya bir bağımlılığın söz konusu alt bağımlılık ya da başka herhangi bir şey.

npx rollup --input main.js --config ./rollup.config.mjs --file compiled.js

Dosyaları manuel olarak düzenleme

En basit seçenek, RHC'ye neden olan kodu silmektir. Şu uygulamada aç: metin düzenleyicinizi kullanın ve ihlalde bulunan satırları silin. Bu genellikle tavsiye edilmez. Çünkü kırılgan olduğu ve unutulabileceği için. Bu da "library.min.js" adlı bir dosya olduğunda projenizin zorlaşmasını sağlayın değil kelimenin tam olarak kitaplığı.min.js olmalıdır. Ham dosyaları düzenlemek yerine bu dosyadaki sürdürülebilir seçeneği, patch-package gibi bir araç kullanmaktır. Bu bir süper değişiklikleri olabilir. Yazılım, yama dosyaları ve Git veya Subversion gibi sürüm kontrol sistemlerini destekler. Yapmanız gerekenler kodu manuel olarak değiştirmeniz, fark dosyasını kaydetmeniz ve yama-package'ı ekleyin. Ayrıntılı eğitimin tamamını projenin benioku’su. Bir projeye yama uyguluyorsanız gerçekten ve değişikliklerin yapılması talebinde bulunmak için projeye ulaşmanızı teşvik edebilir. yukarı akış. Yama paketi, yamaların yönetilmesini çok daha kolay hale getirse de, daha iyi hale gelecektir.

Kod kullanılmıyorsa ne yapmak gerekir?

Kod tabanları büyüdükçe bağımlılıklar (ya da bir bağımlılığın veya bağımlılığın artık kullanılmayan kod yollarını koruyabilir. Bu bölümlerden birinde RHC'yi yüklemek veya yürütmek için kod içeriyorsa kaldırılması gerekir. Google ölmüş veya kullanılmamış olması fark etmez. Kullanılmıyorsa kitaplığın kaldırılması için yama uygulayarak veya yama uygulayarak kaldırabilirsiniz.

Geçici bir çözüm var mı?

Genelde hayır. RHC'ye izin verilmez. Ancak bununla birlikte, izin verilen durumlarda kullanın. Bunlar neredeyse her zaman imkansızdır.

Kullanıcı Komut Dosyaları API'si

Kullanıcı Komut Dosyaları, genellikle gibi kullanıcı komut dosyası yöneticileri için tasarlanmıştır. Örneğin, TamperMonkey ve Şiddetli maymun. Bu yöneticiler, aynı anda kullanılan kullanıcılar tarafından yazıldığından, User Script API bu kodu yürütmenin bir yolunu sunar tarafından sağlanır. Bu, değildir chrome.scripting.executeScript veya diğer kod yürütme ortamlarında kullanılabilir. Kullanıcıların herhangi bir şeyi yürütmek için geliştirici modunu etkinleştirmesi gerekir. Chrome Web Mağaza inceleme ekibi bu ürünün (ör. kullanıcı tarafından sağlanan kod) reddedilmiş olabilir veya Google Play Store'dan kaldırıldı.

chrome.debugger

chrome.debugger API, uzantılara ile etkileşimde bulunma olanağı sağlar. Chrome Geliştirici Araçları Protokolü. Bu, kullanılan protokolle aynı Chrome'un Geliştirici Araçları ve çok sayıda diğer araç. Bu sayede uzantısı uzak kod isteyebilir ve yürütebilir. Tıpkı kullanıcı komut dosyaları gibi chrome.scripting'in yerini alıyor ve çok daha dikkat çekici bir kullanıcı deneyimi sunuyor. Kullanıcı, kullanılırken sayfanın en üstünde bir uyarı çubuğu görür penceresini kapatın. Banner kapatılırsa veya kapatılırsa hata ayıklama oturumu feshedildi.

Chrome'da "Hata Ayıklayıcı Uzantısı, bu tarayıcıda hata ayıklamaya başladı" mesajını içeren adres çubuğunun ekran görüntüsü
Chrome'da "Hata Ayıklayıcı Uzantısı, bu tarayıcıda hata ayıklamaya başladı" mesajını içeren adres çubuğunun ekran görüntüsü

Korumalı alana alınmış iframe'ler

Bir dizeyi kod olarak değerlendirmeniz gerekiyorsa ve DOM ortamında (ör. içerik komut dosyası), ardından başka bir seçenek korumalı iFrame kullanmaktır. Uzantılar Varsayılan olarak eval() bir güvenlik önlemi olarak kullanılır. Kötü amaçlı kodlar kullanıcıların güvenliğini sağlayabilir risk altında olduğunu unutmayın. Ancak kod yalnızca bilinen bir kasada yürütüldüğünde diğer sitelerden korumalı alana alınmış bir iframe gibi bu riskler büyük ölçüde azalır. Bu bağlamda, İçerik Güvenliği Eval kullanımını engelleyen politika kaldırılabilir. Böylece her türlü geçerli JavaScript kodu olmalıdır.

Kapsanmayan bir kullanım alanınız varsa ekibimizle iletişime geçebilirsiniz. geri bildirim almak için chromium-extensions posta listesini kullanarak veya yeni bir Tek Noktadan Destek'ten yardım istemek için destek kaydı

Bir karara katılmıyorsanız ne yapmalısınız?

Politikaların uygulanmasında incelikler görülebilir. İnceleme manuel giriş gerektirir. Bu da, Chrome Web Mağazası ekibi bazen yorum kararlarını değiştirmek konusunda anlaşabilir. Eğer İnceleme sırasında bir hata yapıldığını düşünüyorsanız ret kararına itiraz edebilirsiniz. Tek Noktadan Destek kullanarak