Estou tentando impedir que um determinado site possa usar o javascript para redirecionar o navegador para outra página. O script em questão é um script embutido, portanto o Greasemonkey e o adBlock não podem fazer nada a respeito.
As políticas de segurança configurável (CAPS) parecem ser a resposta, mas não consigo fazê-lo funcionar window.location
e todas as minhas pesquisas não estão sendo úteis. O script fica assim:
<script>
window.location = "someotherpage.html";
</script>
E foi isso que tentei no meu arquivo user.js:
user_pref("capability.policy.policynames", "noredirect");
user_pref("capability.policy.noredirect.sites", "http://www.zshare.net http://127.0.0.1");
user_pref("capability.policy.noredirect.Window.Location.replace", "noAccess");
user_pref("capability.policy.noredirect.Window.Location.assign", "noAccess");
user_pref("capability.policy.noredirect.Window.Location.reload", "noAccess");
user_pref("capability.policy.noredirect.Window.Location", "noAccess");
user_pref("capability.policy.noredirect.Document.Location.replace", "noAccess");
user_pref("capability.policy.noredirect.Document.Location.assign", "noAccess");
user_pref("capability.policy.noredirect.Document.Location.reload", "noAccess");
user_pref("capability.policy.noredirect.Document.Location", "noAccess");
user_pref("capability.policy.noredirect.Location.replace", "noAccess");
user_pref("capability.policy.noredirect.Location.assign", "noAccess");
user_pref("capability.policy.noredirect.Location.reload", "noAccess");
user_pref("capability.policy.noredirect.Location", "noAccess");
Eu o testei em uma página hospedada localmente e consegui bloquear a função de alerta, mas nada que tentei foi capaz de desativar window.location
.
Alguém sabe como fazer isso?
firefox
javascript
redirection
security-policy
Telanor
fonte
fonte
Respostas:
Embora não seja uma solução do Firefox para o seu problema, que tal uma solução alternativa?
No Opera, tudo que você precisa é de uma regex simples que encontre e substitua o script. Nenhuma extensão complexa, apenas um arquivo JS de usuário simples, que se pareceria com isso.
Disable redirection 1.00.js
:fonte
window.location
, você pode encontrar e substituir em vez de parar o script inteiro.A única maneira infalível é escrever seu próprio complemento do Firefox. O Greasemonkey não pode fazer isso porque javascript, como
beforeunload
, não pode bloquearwindow.location = "..."
redirecionamentos.No entanto, impedi que sites fizessem isso usando NoScript e / ou RequestPolicy . Nenhuma das abordagens é perfeita, mas elas podem funcionar para você.
Idealmente, use o NoScript para bloquear o JS do site. Isso interromperá o local da janela.
Muitos sites funcionam de maneira aceitável sem JS. Se este site realmente precisar de JS, o NoScript não o ajudará com o problema de localização. Mas o NoScript, como o AdBlock, é ótimo para acelerar a rede e reduzir o lixo.
A próxima correção possível é usar RequestPolicy . RequestPolicy pode bloquear apenas solicitações de site_A para site_B, por exemplo (enquanto permite site_B em outras circunstâncias).
Isso funcionará enquanto
window.location
estiver em uma página em outro site. Se for o mesmo site, o complemento personalizado é a única alternativa.Lembre-se de que RequestPolicy encerra quase tudo, por padrão, e requer que você aceite sites aceitáveis. Isso significa que requer um pouco de treinamento / configuração.
A parte boa é que ele pode parar praticamente todas as travessuras entre sites que existem na Web - que é como o Facebook, o Google etc. rastreiam todos os seus movimentos e como são realizadas muitas explorações de segurança.
Se as 2 primeiras opções não funcionarem, outra possibilidade é:
// @require
diretiva ou cole apenas o código.Se nenhuma das opções acima funcionar, sua única opção é escrever seu próprio complemento FF.
fonte