Firefox’ta CSP’yi yalnızca yer imlerinin kullanımı


26

Bugün , İçerik Güvenliği Politikası (CSP) kısıtlamaları nedeniyle , https://github.com/ adresinde yer imleri çalıştıramadığımı fark ettim . Firefox’ta CSP’yi sadece yer imleri için devre dışı bırakmanın bir yolu var mı?

Bu security.csp.enableseçeneği fark ettim about:config, ancak bu CSP'yi tamamen devre dışı bırakır. Bir yer imi etkinleştirilirken aşağıdaki mesaj konsola kaydedilir:

Timestamp: 04/22/2013 02:39:05 PM
Warning: CSP WARN:  Directive inline script base restriction violated

Source File: https://github.com/
Line: 0
Source Code:
javascript:...

Yanıtlar:


8

Bu hizmeti kullanmak için yer işareti dönüştürmek için deneyebilirsiniz GreaseMonkey userscripts. Ayrıcalıklı bir ortamda koşuyorlar ve CSP'ye tabi değiller.

Bununla birlikte, elbette, kullanıcıların tanımlamaları ve yer imlerinin kapsamları farklıdır - kullanıcı adları talep üzerine yer imlerinin yanı sıra otomatik olarak çalıştırılır. Bunu, örneğin kullanıcı <button>sayfasında bir sayfa oluşturarak, sayfaya ekleyerek onclickve yer imi kitabının kodunu açmak için bu düğmeye bir olay dinleyicisi ayarlayarak atlayabilirsiniz .

Kod şöyle gitmeli:

// ==UserScript==
// @name            Name
// @description     Description
// @version         0.1
// @namespace       example.Lekensteyn
// @grant           none
// @include         http*://github.com/*/*/commit/*
// ==/UserScript==

var myBookmarklet = function () {
    // here goes the code of the bookmarklet
};

var newButton = document.createElement('button');
newButton.innerHTML = 'Execute my bookmarklet';

newButton.addEventListener('click', function(evt) {
    myBookmarklet();
});

document.getElementById('someElement').appendChild(newButton);

Kelimenin tam anlamıyla, benim GitHub'ı da hedef alan kullandığım sayfamdan alınmıştır . Koddaki debugger;anahtar kelimeyi kullanarak Firebug'daki kullanıcı kodlarını hata ayıklayabilirsiniz .

Bununla birlikte, Firebug'un şu anda CSP'ye tabi olduğunu unutmayın; bu nedenle, örneğin konsolda kod yürütemezsiniz (ancak kullanıcı kodlarınızı "salt okunur" modda inceleyebilirsiniz). Bu, bu böcekle halledilir .


1
İsteğe dayalı özellik çok önemlidir. Sayfanın büyük bölümünü doldurmayan bazı özelliklere hızlı bir değerlendirme metni ekleyen yer imi kitapçıklarım var, bunlardan biri geçerli sayfa için bir QR kodu ve diğer küçük parçalar için. Bunlar GH'a özgü değil. Yer imlerinin gücü, kolayca oluşturulabilir ve kaldırılabilir olmalarıdır. GreaseMonkey zaten kurulmuştu, ancak bu CSP sorununu çözmeyecek. Önerileriniz için teşekkürler, belki de Firebug için bir çözüm, kitapçıklar için de faydalı olacaktır.
Lekensteyn

4
Ne yazık ki Firebug düzeltmesi yalnızca Firebug'un kendisini düzeltecektir. Gönderen Github CSP üzerinde girişini blog : As CSP spec tarafından açıkça, tarayıcı işaretcikler CSP tarafından etkilenmemelidir. (..) Ancak, tarayıcılardan hiçbiri bunu doğru anlamıyor. Hepsi CSP ihlallerine neden olur ve yer imi uygulamasının çalışmasını önler. Belki de vakayı daha ayrıntılı araştırmalı ve Bugzilla ile ilgili bir sorunu rapor etmelisin.
jakub.g

2
BTW, istek üzerine işlev çağrısı yapmak için GM_registerMenuCommand kullanabilirsiniz . Unutma @grant GM_registerMenuCommand. Altında güvenilir Greasemonkey menüsüne giriş ekler (GM logo) > User Script Command.... Bu şekilde, yer işaretlerinizi kolayca kullanıcı kodlarına dönüştürebilirsiniz.
jakub.g

Anlamıyorum ... tıklandığında işe yaramadığında kodu yüklemek için sayfada bir düğme oluşturmak hala bir CSP istisnası yaratıyor
Michael

7

Github, teknik özelliklere göre çalışması gerektiğini söylüyor, ancak hiçbir tarayıcı doğru anlamıyor:

https://github.com/blog/1477-content-security-policy#bookmarklets

Bu sorun için favori tarayıcınız için bir hata açmalı ya da ona oy vermelisiniz:


2
Kayıt için, özellikle temel
kitapçık

Diğerlerini tıklamak için, yukarıdaki yorumda @djpohly tarafından belirtilen 1478037 numaralı hata, yer işaretlerinin harici kaynakları yüklemedikleri sürece çalışmasına izin vermekle ilgilidir.
Waldyrious

1

Birçok cevap, kullanıcı komut dosyalarını (TamperMonkey veya GreaseMonkey gibi) önerir, ancak bazı sayfaların bu uzantılar tarafından bir nedenle kara listeye alındığını hatırlatmak isterim. (Elbette, kara listeyi geçersiz kılabilirsiniz, ancak devlerin güvenliği göz önünde bulunduruldu ve bu sayfaları kilitledi).

Örneğin, herhangi bir Amazon listesinden ReviewMeta'ya hızlıca gitmek için bir yer imi kullanmak istedim, ancak Amazon, güvenli olmayan komut dosyası kaynaklarını engelledi (güncelleme: engellenmedi, ancak hiçbir komut dosyası yoktu, utanç verici). Kötü amaçlı kullanıcı komut dosyalarının yüklenmesini / kullanılmasını önlemek için kullanıcı komut dosyası uzantıları varsayılan olarak bankacılık ve alışveriş sitelerinde kara listeye alınmıştır.

(PS Bu kendi başına bir cevap değildir, ancak kara listeye alınmış ve kara listeden çıkarmaktan tereddüt etmekte tereddüt etmekte tereddüt etmeden önce ellerinizi bir kullanıcı kimliğine koymadan önce bunu akılda tutmanın yararlı olacağını düşündüm.)



Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.