¿Cómo deshabilitar CSP en Firefox solo para marcadores?


26

Hoy he notado que no puedo ejecutar bookmarklets en https://github.com/ debido a las restricciones de la Política de seguridad de contenido (CSP). ¿Hay alguna manera de deshabilitar CSP en Firefox solo para bookmarklets y no todo lo demás?

Noté la security.csp.enableopción en about:config, pero esto deshabilitaría CSP por completo. El siguiente mensaje se registra en la consola cuando se activa un marcador:

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:...

Respuestas:


8

Puede intentar convertir sus marcadores en guiones de usuario de GreaseMonkey. Se ejecutan en un entorno privilegiado y no están sujetos a CSP.

Sin embargo, por supuesto, las intenciones de los guiones de usuario y los marcadores son diferentes: los guiones de usuario se ejecutan automáticamente mientras que los marcadores son a pedido. Puede eludir esto, por ejemplo, creando un <button>en el script de usuario, agregándolo a la página y configurando un onclickdetector de eventos en ese botón para activar el código del marcador.

El código debería ser así:

// ==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);

Tomado casi literalmente de mi script de usuario, que también está dirigido a GitHub. Puede depurar scripts de usuario en Firebug usando la debugger;palabra clave en el script.

Sin embargo , tenga en cuenta que Firebug también está sujeto a CSP por ahora, por lo que no puede, por ejemplo, ejecutar código en la consola (pero puede inspeccionar sus scripts de usuario en modo "solo lectura"). Esto se está solucionando en este error .


1
La función bajo demanda es muy importante. Tengo marcadores que insertan un área rápida eval-textarea con algunas características que no ocupan una gran parte de la página, una para crear un código QR para la página actual y algunas otras partes más pequeñas. Esos no son específicos de GH. El poder de los marcadores es que pueden crearse y eliminarse muy fácilmente. GreaseMonkey ya estaba instalado, pero eso no resolverá el problema de CSP. Gracias por las sugerencias, quizás una solución para Firebug también sea beneficiosa para los marcadores.
Lekensteyn

44
Desafortunadamente, la solución Firebug solo solucionará Firebug. De la entrada del blog de Github en CSP : como lo dejó claro la especificación de CSP, los marcadores de navegador no deberían verse afectados por CSP. (..) Pero ninguno de los navegadores entiende esto correctamente. Todos causan violaciones de CSP y evitan que el bookmarklet funcione. Quizás debería investigar el caso más a fondo e informar un problema en Bugzilla.
jakub.g

2
Por cierto, puede usar GM_registerMenuCommand para realizar una invocación de función a pedido. No se olvide @grant GM_registerMenuCommand. Agrega una entrada al menú de Greasemonkey, accesible en (GM logo) > User Script Command.... De esa manera, puede convertir fácilmente sus marcadores en guiones de usuario.
jakub.g

No entiendo ... crear un botón en la página para cargar el código cuando se hace clic no funciona, aún arroja una excepción CSP
Michael

7

Github dice que debería funcionar de acuerdo con las especificaciones, pero ningún navegador lo hace bien:

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

Debería abrir un error para su navegador favorito para este problema, o votar por él:


2
Para el registro, hay otro error de Firefox específicamente para la funcionalidad básica bookmarklet (menos propensos a enredarse en la discusión): bugzilla.mozilla.org/show_bug.cgi?id=1478037
djpohly

Para guardar el clic de otros, el error 1478037 mencionado por @djpohly en el comentario anterior se trata de permitir que los marcadores se ejecuten siempre que no carguen recursos externos.
waldyrious

1

Muchas respuestas recomiendan scripts de usuario (como TamperMonkey o GreaseMonkey) pero quiero recordar que algunas páginas están en la lista negra por alguna razón por estas extensiones. (Claro, puede anular la lista negra, pero los desarrolladores tenían en cuenta la seguridad y bloquearon estas páginas).

Por ejemplo, quería usar un marcador para ir rápidamente a ReviewMeta desde cualquier listado de Amazon, pero Amazon bloqueó las fuentes de script no seguras (actualización: no estaba bloqueado, pero no tenía script, es una pena). Las extensiones de guiones de usuario están en la lista negra en los sitios de banca y compras de forma predeterminada para evitar que se instalen / utilicen guiones de usuario maliciosos.

(PD: Esta no es una respuesta per se, pero pensé que sería útil tener esto en cuenta antes de tener en tus manos un script de usuario solo para encontrar la página en la lista negra y dudar en no incluirla en la lista negra).



Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.