Jump to content
NuGuN

SMF Forum - Stop spam

Recommended Posts

NuGuN

Boas!

O título do tópico não engana... Vou partilhar uma forma de parar o spam nos forums SMF.

Tenho andado a preparar um fórum(smf) para um projecto pessoal e tenho tido alguns problemas com os bot's que mesmo utilizando captchas no registo de utilizadores, eles continuam a registar-se e a fazer o que de melhor sabem... spam!

Fiz umas pequisas na internet para tentar combater a "bicharada", mas o que encontrei não me convenceu muito...

Então a solução que encontrei foi alterar o formulário de registo adicionando um campo de registo obrigatório onde faz a pergunta "És Humano?" com a resposta obrigatória "sim".

Até agora tem resultado... não houve mais bot's a registarem-se. Apenas vejo nos logs as sua tentativas.

Antes de começarem as alterações convém fazerem um backup. Uma vez que não domino de todo o sistema em questão(smf), a forma como faço a alteração pode não ser a correcta. E também não consegui ainda que quando a resposta seja errada seja mostrada uma mensagem. Por este motivo é gerado um erro no log de erros do fórum que acaba por ajudar a perceber quando é que s bots fazem investidas.

Para começar, edita-se o template da página de registo - Themes/default/Register.template.php

Dentro desse ficheiro procurar por smf_autov_username que está dentro de um bloco <dd></dd>. Imediatamente a seguir a esse bloco colocar o seguinte:


<dt><strong><label for="smf_autov_human">', "É Humano? sim/nao", '</label></strong></dt>
<dd>
<input type="text" name="human_txt" id="smf_autov_human" size="30" tabindex="', $context['tabindex']++, '" maxlength="3" value="', isset($context['human']) ? $context['human'] : '', '" class="input_text" />
</dd>

E seguia editar o ficheiro - Sources/Register.php

Dentro da função Register.php, depois de terminar o ciclo if (!$verifiedOpenID) colocar o seguinte:


// Faz o check ao human
if ( ($_POST['human_txt'] != 'sim') ) {
$reg_errors[] = $txt['error_human'];
}

no final deverá ficar assim:

...
if (is_array($context['visual_verification']))
{
loadLanguage('Errors');
foreach ($context['visual_verification'] as $error)
$reg_errors[] = $txt['error_' . $error];
}
}
}

// Faz o check ao human
if ( ($_POST['human_txt'] != 'sim') ) {
	$reg_errors[] = $txt['error_human'];
}
...

De notar que o o parâmetro human_txt quando alterado deve se-lo nos dois ficheiros.

As alterações foram testadas apenas no theme default e na versão 2.0.3. Mas penso que não há problema em fazer a alteração para outras versões.

Cumps!

Edited by NuGuN
GeSHi

Share this post


Link to post
Share on other sites
NuGuN

Eu andei a ver esse mas não gostei de algumas coisas como o facto de trabalhar através de listas, de emails denunciados o que apesar de reduzir em muito, não reduz totalmente e bloquear IP's que em certas situações há o risco de estar a bloquear IP's de potenciais utilizadores ditos "normais". Mas se isso que fiz não tivesse resultado teria instalado esse mod...

Cumps!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.