Ir para conteúdo
Fórum Script Brasil
  • 0

Proteção contra FireFox


Ramon Ag

Pergunta

Bom dia Galera, beleza?

Então, estou passando por um problema sério aqui, rs. Colocamos (a empresa que eu trabalho) um site no qual possui um sistema de Quiz em PHP, está tudo em ordem, funcionando blzinha, o problema é que este quiz é controlado por tempo, no qual eu fiz com script java, e ao final de 60 segundos automaticamente a página é direcionada e contabiliza as respostas preenchidas até aquele momento. Ou caso a pessoa responda todas as perguntas antes do final da contagem, o tempo para e envia as respostas, dai no final contabiliza o número de acertos e o tempo que a pessoa fez.

O problema é o seguinte, tem alguns usuários que conseguem, através do firefox, pausar o tempo ou fazer com que ele rode mais lentamente ou algo do tipo, por que temos cadastros que fizeram 10 pontos (pontuação máxima) em 20 segundos... 10 segundos... até 2 segundos já recebemos. Consegui constatar que é através do FireFox por que um dos cadastrantes enviou um Print da tela reclamando de uma resposta errada e ele tinha acertado 9 questões em 20 segundos (impossível, rs)

Então gostaria de saber se alguém ai sabe como eu posso "blindar" este java para que ninguém pause o tempo, deixe mais lento, nem nada deste tipo.

Ah... a pessoa que "burlou" utilizando firefox disse o seguinte:

"utilizei uma extensão para o Firefox chamada Greasemonkey(...)"

Baixei esta extesão, tentei utilizar mas não sei como foi feito. Falei com outro programador amigo meu e ele disse que a única maneira de evitar a pausa no tempo seria desabilitar a utilização do site para navegadores FireFox, porém 30% dos acessos estão sendo do firefox.... alguém tem uma solução para isso?

Vlws... conto com ajuda de vocês.

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

você usou javascript, certo?? isso é diferente de java, vo mover pra sala correta.

o greasemonkey é uma extensao q permite q você execute scripts escritos por você mesmo no site q você quiser. então o cara deve ter feito um codigo javascript pra alterar o seu timer.

não sei se é possivel proteger contra o greasemonkey, mas vamos ver se alguém sabe de algo q pode ser feito.

uma ideia q eu tive aqui seria fazer o quiz em flash.

Link para o comentário
Compartilhar em outros sites

  • 0

Opa.. é , foi em Javascript mesmo... desculpe, depois que postei vi que tinha uma área diferente para postar este tipo de dúvida.

É... também não encontrei até o momento uma forma de protejer contra plugins como greasemonkey. E não tem como fazer em flash por dois motivos:

1- As perguntas são cadastrada no banco de dados juntamente com as respostas. São 200 perguntas e respostas que são exibidas apenas 10 aleatoriamente, e após o tempo esgotar faz o cadastro e retorna o resultado (pontos, tempo e respostas certas/erradas).

2- Não saberia fazer isso no flash. Tentei fazer apenas o contador em flash ou algum outro tipo de sistema porém no flash não consigo fazer enviar o tempo do flash + os dados do PHP, apenas envia um ou outro. E não encontrei nenhuma outra forma de fazer o cronometro além do javascript (ele é regressivo).

Obrigado....

Link para o comentário
Compartilhar em outros sites

  • 0

Como disse você esta usando PHP ... use ele pra bloquear a pessoa de fazer esse tipo de coisa ...

Tipo assim na hora que a pessoa entrar na 1º pergunta grave uma sessão por exemplo com o timestamp atual tipo:

$_SESSION["InicioQuiz"] = time();
Ao final quando ele dá as respostas você compara a data de entrada com a de saída, ou comparda o resultado da soma com o java script:
$tempo = (time() - $_SESSION["InicioQuiz"]);

echo $tempo; // Tempo entre a Primeira e Ultima resposta em Segundos

Com JS você não ira conseguir bloquear pois como o script roda no cliente a pessoa pode modificar a gosto ... como é o que talvez esteje ocorrendo.

Link para o comentário
Compartilhar em outros sites

  • 0

Uhm... entendi. Acho que por este caminho estamos chegando em um código seguro, dentro do que comentei.

Uma única dúvida, o tempo que esta rodando no cronometro é em segundos e centésimos, aparecendo então por exemplo: 15.88.

Quanto estava fazendo o cronometro tinha encontrado que no servidor só exibe hh:mm:ss , então tem algum modo de fazer a comparação do time(); desta maneira (segundos e décimos)?

Vlw... enquanto isso vou tentando utilizar esta comparação de tempo, pois hoje já tivemos mais 5 cadastros impossíveis em 1° lugar.

Link para o comentário
Compartilhar em outros sites

  • 0

Ah... estive testando aqui, não vai dar certo desta maneira.

Vou postar abaixo um exemplo do código para ver se alguém sabe como eu poderia comparar o tempo que a pessoa está cadastrando com o tempo real que ela fez.

Um detalhe importante também é que o quiz é carregado no arquivo quiz.php e a hora que a pessoa termina, o tempo pausa e envia os dados por "_post" para o arquivo resultado.php, então se comparar o SESSION da página quiz.php com o TIME() da resultado.php vai dar diferença de tempo dependendo do tempo que a pessoa demorou para carregar a página certo? Então seria mais simples apenas ver o tempo do início da sessão com o tempo do final e ver se este tempo é maior do que 60 segundos (tempo máximo do cronometro), se for exibe o alerta.

O código é o seguinte:

// TEMPO QUE A PESSOA GRAVOU NO SESSION - TEMPO ATUAL (porém os dois tem que ser em segundos para dar certo, aqui está o problema!)
$TempoExato = (time() - $_SESSION["InicioQuiz"]);

// TEMPO QUE A PESSOA ENVIOU COM _POST (00.00)
$Tempo = $_POST["tempor"];

// FAZENDO A DIVISÃO DOS SEGUNDOS E CENTÉSIMOS
$DivideTempo = explode(".", "$Tempo"); 

// EXIBINDO OS SEGUNDOS
$SegundosTempo = $DivideTempo[0];

// EXIBINDO OS DÉCIMOS
$DSegundosTempo = $DivideTempo[1];


// VENDO SE O TEMPO DA PESSOA É MENOR QUE O TEMPO SALVO NO SESSION
if ($SegundosTempo < $TempoExato){
echo "<script>window.alert(\"Seu Tempo real foi $TempoExato, você esta desclassificado!\");</script>";
echo "<meta http-equiv='refresh' content='0;URL=index.php'>";
}


//OU....

if ($TempoExato <60){
echo "<script>window.alert(\"Seu Tempo real foi $TempoExato, você esta desclassificado!\");</script>";
echo "<meta http-equiv='refresh' content='0;URL=index.php'>";
}

Vlw...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...