"Segurança" (lado cliente) contra 'cola' em prova

Galera,

acredito que isto pode ser feito em JS, mas ainda não vi algo satisfatório.
Preciso proteger uma página: não deixar o cara dar alt tab, e nenhum outro atalho para mudar de janela
e / ou deixar a janela como ‘AlwaysOnTop’ (eita Swing). Claro, control C / control V e o click com o botão direito
também deve ser desativado.

Voces sabem se isto é possível só com JS?
Abraçoss…

[quote=d34d_d3v1l]Galera,

acredito que isto pode ser feito em JS, mas ainda não vi algo satisfatório.
Preciso proteger uma página: não deixar o cara dar alt tab, e nenhum outro atalho para mudar de janela
e / ou deixar a janela como ‘AlwaysOnTop’ (eita Swing). Claro, control C / control V e o click com o botão direito
também deve ser desativado.

Voces sabem se isto é possível só com JS?
Abraçoss…
[/quote]

você não vai conseguir impedir o usuário de mudar o foco para outra janela, isso acho que não tem como (eu posso estar errado mas acho improvável), quanto ao ctrl c e ctrl v não achoque dê para “impedir”, mas acho que da para “detectar”, e detectando você poderia gravar o texto a cada caracter preenchido e caso a ultima coisa que foi pressionada foram as teclas ctrl e v, você pode voltar o texto anterior… ou mudar alguma flag de “questão XX colada”. Isso ainda não impede de ir lendo de outro lugar mesmo de dentro do computador e ir digitando…

no browser suas opções são meio limitadas quanto ao controle da máquina do usuário, e por um bom motivo.

O Internet Explorer tem um modo “kiosk” (que você aciona com o parâmetro -k) mas ele não impede que você use Alt+Tab ou Ctrl+ESC para mudar de tela.

Normalmente o que eu vejo em testes de certificação (como os da Vue ou da Prometric) é uma aplicação Delphi ou .NET rodando sob um login do Windows bem maceteado, que não permite você rodar absolutamente nenhuma aplicação, exceto a aplicação de teste. Dá até para desativar o Ctrl+Alt+Del se você souber como macetear o login.

Nunca vi uma aplicação Web para provas de certificação.

(Obviamente você pode fazer sua aplicação Delphi ou .NET baixar as questões de um web site via algo semelhante a Web Services, mas não a aplicação em si.

Você pode até criar uma aplicação Delphi ou .NET que hospede um mini-browser, mas você tem de tomar bastante cuidado para que não apareça alguém que acabe, de alguma maneira, usando esse mini-browser para acessar alguma outra página que não as suas do teste.

Tambem acho pouco provavel isso funcionar da maneira que deseja. Eu usaria um Applet ou aplicativo mais especifico enviado do servidor, mas isso nao impede que o cliente utilize uma outra fonte para a cola (outro Pc, tablet, celular).

Acho mais fácil vc impedir o cara de responder aquela questão, e informa-lo do porque.

Com javascript você consegue desativar comandos como ALT + TAB e SHIFT + ALT + TAB, além de CTRL + V.
Porém, impedir que o usuário abra outra janela e vá consultando, é praticamente impossível. Além do que, os eventos do mouse que o js pode controlar é dentro da página em questão.
Com os browsers usando abas, você já perde essa propriedade, se o sujeito abrir duas abas, todo esforço será perdido.
Digo isto por que o sistema com o qual trabalho é web e permite apenas SHIFT + ALT + TAB e algumas coisas coisas (copiar e colar, só com o botão direito do mouse, por exemplo).

Seguindo à risca o conceito de cola, você não pode fazer muito, remotamente (a não ser que use uma webcam que fique focada na pessoa que faz a prova, ai são outros trocentos). O sujeito pode imprimir, consultar um livro, algum colega ou amigo, fazer ligação telefônica…

Para impedir o usuario de abrir uma nova janela, eh uma configuracao do sistema, veja em:
http://msdn.microsoft.com/en-us/library/ms814887.aspx

Outra alternativa eh alterar o registro do sistema, aqui tem um passo a passo:
http://www.liutilities.com/products/registrybooster/tweaklibrary/tweaks/10169/

Para impedir o usuario criar uma nova tab no IE:

Va eh Tools -> Internet Options

Na sessao “Tabs” clique “Settings” ai eh soh desabilitar a opcao “Enable Tabbed Browsing”

Pronto, o usuario nao vai pode mais criar tabs.

Isso eu acho que resolver parcialmente o seu problema, porque mesmo fazendo essas alteracoes, o usuario tem a possibilidade de abrir um segundo IE, mas eu acho que (como alguem ja disse), iniciando o IE em kiosk mode, vai resolver o seu problema e deixar o usuario usar somente o IE.

Aqui tem um tutorial explicando como usar o kiosk mode:
http://support.microsoft.com/kb/154780

Quanto ao copy and paste (CTRL C + CTRL V), aqui tem um post muito bom, usando JQuery.

http://www.mkyong.com/jquery/how-to-detect-copy-paste-and-cut-behavior-with-jquery/

Acho que com isso, vc faz tudo que vc quer nao eh???
O usuario nao pode abrir uma nova janela, nao pode abrir tab, nao vai poder abrir um novo browser e ctrl c + ctrl vc desativa usando JQuery. :slight_smile:

Enjoy!

//Daniel