¿Puedo asegurar que los comandos del teclado no queden atrapados por los scripts del navegador?

14

¿Es posible ajustar Safari para garantizar combinaciones de teclas de comando como Ho Lir a Safari en lugar de los contenidos de la ventana de Safari?

Esto se me ocurre con mayor frecuencia en este sitio porque la ventana del editor (como donde estoy escribiendo ahora) captura estas teclas para hacer encabezados y enlaces, pero en general, parece un agujero de seguridad para permitir que los sitios capturen las teclas de comando. .

Tenga en cuenta que estoy buscando una manera de hacer esto sin deshabilitar JavaScript por completo.

Por lo que sea que valga, estoy corriendo Mountain Lion.

Daniel
fuente
44
Puede usar NinjaKit para deshabilitar los accesos directos utilizados en los sitios de Stack Exchange. Consulte apple.stackexchange.com/questions/60587 y meta.stackexchange.com/questions/2980 .
Lri
1
Eso es increíble, @LauriRanta, y ayuda con este problema específico, pero como un agujero de seguridad general, me encantaría una forma de evitar que los sitios web maliciosos atrapen ⌘W o ⌘Q sin simplemente deshabilitar JavaScript.
Daniel
Agregué la etiqueta de seguridad. Porque saber qué parte de una aplicación está leyendo ( escuchando ) el teclado es una característica básica de seguridad. Si la barra de menú mostraba algún cambio en el oyente del teclado , muchos ataques basados ​​en sniffers harían como cucarachas cuando encienda la luz.
dan
@DanielLawson ¿Esta extensión de Safari de código abierto ayudaría a javascript-blocker.toggleable.com
Simon

Respuestas:

2

La única forma segura de evitar que el teclado atrape la entrada de JavaScript es deshabilitar JavaScript en el navegador.

Entiendo que le gustaría dejar JavaScript activado, pero está diseñado para pasar el control casi total de las pulsaciones de teclas sin procesar al navegador y no a la aplicación una vez que el sistema operativo entrega los datos de entrada. Esto significa que necesitaría una solución de código específica para cada implementación de filtrado de teclado en cada página / sitio potencial para garantizar que los acordes de teclas arbitrarias como Command H se envíen a Safari en lugar de JavaScript.

Consulte estos enlaces para obtener una descripción general de cómo se manejan las pulsaciones de teclas:

El último enlace es un probador para mostrarle los eventos sin procesar y verá que incluso un breve ⌘Q puede quedar atrapado por JavaScript si el desarrollador del sitio web lo desea.

bmike
fuente
El controlador del teclado es parte del sistema operativo, por lo que el sistema operativo pasa las pulsaciones de teclas al navegador, que pasa las pulsaciones de teclas al contenido web, que aparentemente luego decide qué teclas presionar para volver al navegador y / o sistema operativo ...
Daniel
Probablemente sea aún más complicado que eso con el espacio del núcleo / espacio del usuario / API y las complejidades del marco.
bmike