Могу ли я убедиться, что команды клавиатуры не попадают в сценарии браузера?

14

Можно ли настроить Safari таким образом, чтобы сочетания клавиш, такие как Hили Lпереходить в Safari, отличались от содержимого окна Safari?

Это чаще всего встречается на этом сайте, потому что окно редактора (например, там, где я сейчас печатаю) фиксирует эти нажатия клавиш для создания заголовков и ссылок, но в целом это похоже на дыру в безопасности, позволяющую сайтам захватывать нажатия клавиш команд ,

Обратите внимание, что я ищу способ сделать это без полного отключения JavaScript.

Как бы то ни было, я управляю Горным Львом.

Даниэль
источник
4
Вы можете использовать NinjaKit, чтобы отключить ярлыки, используемые на сайтах Stack Exchange. См. Apple.stackexchange.com/questions/60587 и meta.stackexchange.com/questions/2980 .
Lri
1
Это круто, @LauriRanta, и это помогает в решении этой конкретной проблемы, но, как общая дыра в безопасности, я бы хотел, чтобы способ не позволял вредоносным веб-сайтам перехватывать ⌘W или ⌘Q без простого отключения JavaScript.
Даниэль
Я добавил тег безопасности. Потому что знать, какая часть приложения читает ( слушает ) клавиатуру, является основной функцией безопасности. Если в строке меню отображалось какое-либо изменение прослушивателя клавиатуры , многие атаки, основанные на снифферах, при включении подсветки действовали бы как тараканы.
дан
@DanielLawson Поможет ли это расширение Safari с открытым исходным кодом javascript-blocker.toggleable.com
Simon

Ответы:

2

Единственный надежный способ избежать ввода с клавиатуры-ловушки JavaScript - отключить JavaScript в браузере.

Я понимаю, что вы хотели бы оставить JavaScript включенным, но он предназначен для того, чтобы передавать полный контроль над нажатиями клавиш в браузере, а не в приложении после того, как ОС передаст ему ввод данных. Это означает, что вам потребуется определенное кодовое решение для каждой реализации фильтрации клавиатуры, возможно, на каждой отдельной странице / сайте, чтобы гарантировать отправку произвольных клавишных аккордов, таких как Command H, в Safari вместо JavaScript.

Посмотрите эти ссылки для обзора того, как обрабатываются нажатия клавиш:

Последняя ссылка - это тестер, который покажет вам необработанные события, и вы увидите, что даже короткий ⌘Q может быть захвачен JavaScript, если разработчик веб-сайта пожелает это сделать.

bmike
источник
Драйвер клавиатуры является частью ОС, поэтому ОС передает нажатия клавиш в браузер, который передает нажатия клавиш веб-контенту, который, очевидно, затем решает, какие нажатия клавиш следует возвращать в браузер и / или ОС…
Даниэль
Вероятно, это даже сложнее, чем с пространством ядра / пользовательским пространством / API и сложностями фреймворка.
bmike