Страница 1 из 1

docuwiki: антибот

СообщениеДобавлено: Вс апр 07, 2013 19:12
Serg
Изменить размер шрифта ↓ВернутьИзменить размер шрифта ↑Модификация (проверено на rc2013-03-06, код других версий может отличаться, будьте внимательны):

1) inc/common.php, найти
Код: Выделить всё
function getSecurityToken() {
    return md5(auth_cookiesalt().session_id().$_SERVER['REMOTE_USER']);
заменить на
Код: Выделить всё
// Antibot100500 begin
//function getSecurityToken() {
    //return md5(auth_cookiesalt().session_id().$_SERVER['REMOTE_USER']);
function getSecurityToken($secure = true) {
    return md5(auth_cookiesalt().session_id().$_SERVER['REMOTE_USER']) . ($secure ? md5(time()) : '');
// Antibot100500 end

Затем найти
Код: Выделить всё
    if(getSecurityToken() != $token) {
заменить на
Код: Выделить всё
// Antibot100500 begin
//    if(getSecurityToken() != $token) {
    if(getSecurityToken(false) != $token) {
// Antibot100500 end


2) inc/auth.php, найти
Код: Выделить всё
    //check mail
    if(!mail_isvalid($email)) {
        msg($lang['regbadmail'], -1);
        return false;
    }
добавить после
Код: Выделить всё
// Antibot100500 begin
   if(getSecurityToken(false) != $INPUT->str('sectok')) {
        msg($lang['regmissing'], -1);
        return false;
    }
// Antibot100500 end


3) lib/tpl/docuwiki/tpl_footer.php, найти
Код: Выделить всё
</div></div><!-- /footer -->
добавить после
Код: Выделить всё
<!-- Antibot100500 -->
<script type="text/javascript">// <![CDATA[
      var SecTok = document.getElementsByName("sectok");
      for (var i = 0; i < SecTok.length; i++) {
         if ( SecTok[i].value.length > 32 ) {
            SecTok[i].value = SecTok[i].value.substring(0,32);
         }
      }
// ]]></script>
<!-- /Antibot100500 -->


В результате модификации при отключенном в браузере JavaScript невозможны регистрация и любые изменения текстов.

Таким образом, боты, "не понимающие" javascript (практически все такие), не могут регистрироваться и размещать тексты либо их изменять.

Если бот уже зарегистрировался (до применения мода), он также на сможет "наспамить".

Все "в одном флаконе":
  • Для dokuwiki-rc2013-03-06 (Weatherwax RC1)
  • Для dokuwiki-2012-10-13.tgz (Adora Belle)
Можно копировать все файлы из /root.dokuwiki-rc2013-03-06_Weatherwax_RC1 или /root.dokuwiki-2012-10-13_Adora_Belle (соответственно) на сервер по местоположению docuwiki с сохранением структуры каталогов. Заменятся три файла:
Код: Выделить всё
inc/common.php
inc/auth.php
lib/tpl/docuwiki/tpl_footer.php

Скачать с Яндекс Диска: antibot_v_1_0_0.zip