PHP-Nuke
  Strona głównaDownloadForumFAQ Zaloguj się  
Forum


 
Regulamin  Forum FAQ   Szukaj   Grupy   Rejestracja   Zaloguj
 
 
Zadając pytanie dotyczące PHPNuke podaj jego wersje!!

Zobacz następny temat
Zobacz poprzedni temat
Napisz nowy temat   Odpowiedz do tematu  Forum PHP-Nuke.org.pl Strona Główna » Bezpieczeństwo
Autor Wiadomość
pmc
~user



Dołączył(a): 1.05.2006
Posty: 9


Status: Offline


 
PostWysłany: 16 Paź 2008 17:55:25 Back to top  
Przeglądarka użytkownikaUA: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3

Witam. Na mojej stronie zbudowanej w oparciu o PHP Nuke 7.7 można dodawać komentarze anonimowo (bez logowania). Jest tak od samego początku czyli od jakichś 2 lat. Oczywiście zdarzają się wpisy bootów, które albo blokuję przez IP, albo usuwam z bazy przez phpmyadmin. Do tej pory były to pojedyncze wpisy.

Od 3 dni nastąpił zmasowany atak na komentarze. Dziennie wpisuje się około 400 - 500 bootów. Czy jest jakiś sensowny sposób na ich zablokowanie ? Dodam, że nie chcę wprowadzać konieczności logowania. Może jest jakiś skrypt, który umożliwia dodanie do komentarzy opcji, która wymusza przepisanie kodu z obrazka ?

Szukałem na tym forum ale niestety nic konkretnego w tym temacie nie znalazłem. Będę wdzięczny za pomoc. W tej chwili musiałem wyłączyć możliwość dodawania komentarzy, bo nie nadążam ich usuwać z bazy.
Zobacz profil autora    
Jaszczur
~user



Dołączył(a): 21.12.2004
Posty: 1137
Pochwał: 83
Skąd: Racibórz/Katowice

Status: Offline


 
PostWysłany: 19 Paź 2008 22:08:47 Back to top  
Przeglądarka użytkownikaUA: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3

zobacz np. w module your_account jak jest wykorzystywana funkcja gfx (odpowiedzialna za pokazanie się obrazka z liczbami do przepiania) i na podstawie tego możesz napisać coś takiego do komentarzy, mnie się to udało na www.portalliteracki.pl

_________________
Nie udzielam porad via GG,PW, mail etc - o wszystko pytać na forum
www.tobiasz.org | www.phpnuke.com.pl
Zobacz profil autora Odwiedź stronę autora Identyfikator TLEN    
pmc
~user



Dołączył(a): 1.05.2006
Posty: 9


Status: Offline


 
PostWysłany: 20 Paź 2008 08:10:47 Back to top  
Przeglądarka użytkownikaUA: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3

Dziękuję za podpowiedź. Niestety nie jestem tak biegły w pisaniu kodu php. Będę bardzo wdzięczny za dokładniejszy opis co i jak mam zrobić. Czy wystarczy przekopiować pewne fragmenty kodu i wkleić do pliku odpowiedzialnego za dodawanie komentarzy ? Jeśli tak to powinienem sobie poradzić po wskazaniu które fragmenty za to odpowiadają. Jeśli mam jednak napisać kod samemu, to raczej nie dam rady.

Apropos, sprawdzałem stronę, którą podałeś, właśnie dokładnie o takie rozwiązanie mi chodzi.
Zobacz profil autora    
Jaszczur
~user



Dołączył(a): 21.12.2004
Posty: 1137
Pochwał: 83
Skąd: Racibórz/Katowice

Status: Offline


 
PostWysłany: 21 Paź 2008 08:14:19 Back to top  
Przeglądarka użytkownikaUA: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3

pmc napisał(a):
wystarczy przekopiować pewne fragmenty kodu


tak wystarczy


pmc napisał(a):
po wskazaniu które fragmenty za to odpowiadaj


jesli przyjrzysz się strukturze, modułu Your_Account, to powinieneś dostrzec, które fragmenty za to odpowiadają, wykorzystują one funkcje gfx

_________________
Nie udzielam porad via GG,PW, mail etc - o wszystko pytać na forum
www.tobiasz.org | www.phpnuke.com.pl
Zobacz profil autora Odwiedź stronę autora Identyfikator TLEN    
pmc
~user



Dołączył(a): 1.05.2006
Posty: 9


Status: Offline


 
PostWysłany: 21 Paź 2008 21:08:04 Back to top  
Przeglądarka użytkownikaUA: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3

Niestety nie wiem, które to fragmenty. Przeglądałem pliki w Your_Account, zaglądałem do mainfile.php, są tam odwołania do gfx, ale w zbyt wielu miejscach i nie mam pojęcia co dokładnie za co odpowiada. Będę wdzięczny za łopatologiczne wyjaśnienie który kod mam wkleić, w które miejsce, w jakim pliku. Inaczej polegnę. Z góry dzięki wszystkim dobrodziejom Smile
Zobacz profil autora    
briegmannpl
~user



Dołączył(a): 8.10.2008
Posty: 3


Status: Offline


 
PostWysłany: 14 Lut 2009 22:15:31 Back to top  
Przeglądarka użytkownikaUA: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6

Witam

Mam ten sam problem z atakiem botow. Do jednego newsa sa przypisywane ponad 100 komentarzy.

Czy istnieje jakiś sposób na szybkie usuniecie zbędnych komentarzy?
Zobacz profil autora    
Jaszczur
~user



Dołączył(a): 21.12.2004
Posty: 1137
Pochwał: 83
Skąd: Racibórz/Katowice

Status: Offline


 
PostWysłany: 14 Lut 2009 23:13:15 Back to top  
Przeglądarka użytkownikaUA: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6

najlepiej przez phpMyAdmin'a

_________________
Nie udzielam porad via GG,PW, mail etc - o wszystko pytać na forum
www.tobiasz.org | www.phpnuke.com.pl
Zobacz profil autora Odwiedź stronę autora Identyfikator TLEN    
dudi
@admin



Dołączył(a): 13.12.2004
Posty: 3154
Pochwał: 330
Skąd: Tychy

Status: Offline


 
PostWysłany: 18 Lut 2009 11:23:27 Back to top  
Przeglądarka użytkownikaUA: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6

No i jeszcze aktualizacja tabeli nuke_stories koluman comments, która przechowuje ilość komentarzy do newsa.

A żeby pozbyć się tych robotów trzeba przerobić cały system komentarzy. Jeśli znajdę chwilę to wrzucę gotową modyfikację, która z powodzeniem działa już na kilku większych portalach.

_________________
Pomocy udzielam TYLKO na forum !!!
Zobacz profil autora Odwiedź stronę autora    
wkizet
~user



Dołączył(a): 26.08.2006
Posty: 40
Ostrzeżeń: 1


Status: Offline


 
PostWysłany: 18 Sie 2009 18:59:47 Back to top  
Przeglądarka użytkownikaUA: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

Kochani, 3 godziny roboty i coś mi nie chce działać.
Zastosowałem zgodnie z zaleceniami Jaszczura funkcje gfx.
Oto co wyszło w comments.php w funkcji reply:

Kod:
function reply($pid, $sid, $mode, $order, $thold, $random_num, $gfx_check) {
   //include("config.php");  // globalized - Quake
   include("header.php");
   include("config.php");
   global $prefix, $module_name, $user, $cookie, $datetime, $bgcolor1, $bgcolor2, $bgcolor3, $db, $anonpost, $anonymous, $admin;
   cookiedecode($user);
   getusrinfo($user);
   $sid = intval($sid);
   $pid = intval($pid);
   if (!$stop)
   $datekey = date("F j");
   $rcode = hexdec(md5($_SERVER['HTTP_USER_AGENT'] . $sitekey . $random_num . $datekey));
   $code = substr($rcode, 2, 6);
   if (extension_loaded("gd") AND $code != $gfx_check AND ($gfx_chk == 2 OR $gfx_chk == 4 OR $gfx_chk == 5 OR $gfx_chk == 7))
   if ($anonpost == 0 AND !is_user($user)) {
      OpenTable();
      echo "<center><font class=title><b>"._COMMENTREPLY."</b></font></center>";
      CloseTable();
      echo "<br>";
      OpenTable();
      echo "<center>"._NOANONCOMMENTS."<br><br>"._GOBACK."</center>";
      CloseTable();
   } else {
      if ($pid != 0) {
         $row = $db->sql_fetchrow($db->sql_query("SELECT date, name, email, subject, comment, score FROM ".$prefix."_comments WHERE tid='$pid'"));
         $date = $row['date'];
         $name = filter($row['name'], "nohtml");
         $email = filter($row['email'], "nohtml");
         $subject = filter($row['subject'], "nohtml");
         $comment = filter($row['comment']);
         $score = intval($row['score']);
      } else {
         $row2 = $db->sql_fetchrow($db->sql_query("SELECT time, title, hometext, bodytext, informant, notes FROM ".$prefix."_stories WHERE sid='$sid'"));
         $date = $row2['time'];
         $subject = filter($row2['title'], "nohtml");
         $temp_comment = filter($row2['hometext']);
         $comment2 = filter($row2['bodytext']);
         $name = filter($row2['informant'], "nohtml");
         $notes = filter($row2['notes']);
      }
      if(empty($comment)) {   
         $comment = $temp_comment."<br><br>$comment2";
      }
      OpenTable();
      echo "<center><font class=title><b>"._COMMENTREPLY."</b></font></center>";
      CloseTable();
      echo "<br>";
      OpenTable();
      if (empty($name)) $name = $anonymous;
      if (empty($subject)) $subject = "["._NOSUBJECT."]";
      formatTimestamp($date);
      echo "<b>$subject</b> <font class=\"content\">";
      if (!empty($temp_comment)) echo"("._SCORE." $score)";
      if (!empty($email)) {
         echo "<br>"._BY." <a href=\"mailto:$email\">$name</a> <font class=\"content\"><b>($email)</b></font> "._ON." $datetime";
      } else {
         echo "<br>"._BY." $name "._ON." $datetime";
      }
      echo "<br><br>$comment<br><br>";
      if ($pid == 0) {
         if (!empty($notes)) {
            echo "<b>"._NOTE."</b> <i>$notes</i><br><br>";
         } else {
            echo "";
         }
      }
      if (!isset($pid) || !isset($sid)) { echo "Something is not right. This message is just to keep things from messing up down the road"; exit(); }
      if ($pid == 0) {
         $row3 = $db->sql_fetchrow($db->sql_query("SELECT title FROM ".$prefix."_stories WHERE sid='$sid'"));
         $subject = filter($row3['title'], "nohtml");
      } else {
         $row4 = $db->sql_fetchrow($db->sql_query("SELECT subject FROM ".$prefix."_comments WHERE tid='$pid'"));
         $subject = filter($row4['subject'], "nohtml");
      }
      CloseTable();
      echo "<br>";
      OpenTable();
      mt_srand ((double)microtime()*1000000);
         $maxran = 1000000;
         $random_num = mt_rand(0, $maxran);
      echo "<form action=\"modules.php?name=$module_name&amp;file=comments\" method=\"post\">";
      echo "<font class=option><b>"._YOURNAME.":</b></font> ";
      if (is_user($user)) {
         cookiedecode($user);
         echo "<a href=\"modules.php?name=Your_Account\">$cookie[1]</a> <font class=\"content\">[ <a href=\"modules.php?name=Your_Account&op=logout\">"._LOGOUT."</a> ]</font><br><br>";
      } else {
         echo "<font class=\"content\">$anonymous";
         echo " [ <a href=\"modules.php?name=Your_Account\">"._NEWUSER."</a> ]<br><br>";
      }
      echo "<font class=\"option\"><b>"._SUBJECT.":</b></font><br>";
      if (!stripos_clone($subject,"Re:")) $subject = "Re: ".substr($subject,0,81)."";
      echo "<input type=\"text\" name=\"subject\" size=\"50\" maxlength=\"85\" value=\"$subject\"><br><br>";
      echo "<font class=\"option\"><b>"._UCOMMENT.":</b></font><br>"
      ."<textarea wrap=\"virtual\" cols=\"70\" rows=\"15\" name=\"comment\"></textarea><br>";
      if ($nuke_editor == 0) {
          echo "<font class=\"content\">"._ALLOWEDHTML."<br>";
          while (list($key,) = each($AllowableHTML)) echo " &lt;".$key."&gt;";
          echo "</font><br><br>";
      } else {
         echo ""._HTMLNOTALLOWED."</font><br><br>";
         
      }
      if (is_user($user) AND ($anonpost == 1)) { echo "<input type=\"checkbox\" name=\"xanonpost\"> "._POSTANON."<br>"; }
      if (extension_loaded("gd") AND ($gfx_chk == 2 OR $gfx_chk == 4 OR $gfx_chk == 5 OR $gfx_chk == 7)) {
            echo "<tr><td colspan='2'>"._SECURITYCODE.": <img src='?gfx=gfx&random_num=$random_num' border='1' alt='"._SECURITYCODE."' title='"._SECURITYCODE."'></td></tr>\n"
            ."<tr><td colspan='2'>"._TYPESECCODE.": <input type=\"text\" NAME=\"gfx_check\" SIZE=\"7\" MAXLENGTH=\"6\"></td></tr>\n"
            ."<input type=\"hidden\" name=\"random_num\" value=\"$random_num\">\n";
         }
                  if (!isset($mode) OR empty($mode)) {
                    if(isset($userinfo['umode'])) {
                      $mode = $userinfo['umode'];
                    } else {
                      $mode = "thread";
                    }
                  }
                  if (!isset($order) OR empty($order)) {
                    if(isset($userinfo['uorder'])) {
                      $order = $userinfo['uorder'];
                    } else {
                      $order = 0;
                    }
                  }
                  if (!isset($thold) OR empty($thold)) {
                    if(isset($userinfo['thold'])) {
                      $thold = $userinfo['thold'];
                    } else {
                      $thold = 0;
                    }
                  }
                  
      echo "<input type=\"hidden\" name=\"pid\" value=\"$pid\">\n"
      ."<input type=\"hidden\" name=\"sid\" value=\"$sid\">\n"
      ."<input type=\"hidden\" name=\"mode\" value=\"$mode\">\n"
      ."<input type=\"hidden\" name=\"order\" value=\"$order\">\n"
      ."<input type=\"hidden\" name=\"thold\" value=\"$thold\">\n"
      ."<input type=\"hidden\" name=\"random_num\" value=\"$random_num\">"
      ."<input type=\"hidden\" name=\"gfx_check\" value=\"$gfx_check\">"
      ."<input type=\"submit\" name=\"op\" value=\""._PREVIEW."\">\n"
      ."<input type=\"submit\" name=\"op\" value=\""._OK."\"> "._GOBACK."\n"
      ."</font></form>\n";
      CloseTable();
   }
   include("footer.php");
}


Podobnie zrobilem z funkcją replyPreview.
Dołożyłem na końcu

Kod:
case "gfx":
   gfx($random_num);
   break;


Umieściłem w case replu i preview wpisy $random_num, $gfx_check.

I wszystko ładnie pokazuje się, mam kod zabezpieczający, za każdym razem różny, jednak i tak jeśli wpiszę nieprawidłowy, to komentarz pokazuje się pod newsem.
Czego mi zatem brakuje? Bardzo proszę o jakieś sugestie.
Zobacz profil autora    
wkizet
~user



Dołączył(a): 26.08.2006
Posty: 40
Ostrzeżeń: 1


Status: Offline


 
PostWysłany: 23 Sie 2009 08:03:40 Back to top  
Przeglądarka użytkownikaUA: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

Może być tak, że kod zabezpieczający będzie ignorowany, ponieważ komentarz wpisuje osoba zarejestrowana i takowa ma priorytet?
Zobacz profil autora    
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu

Zobacz następny temat
Zobacz poprzedni temat
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz dołączać plików na tym forum
Możesz ściągać pliki na tym forum


Powered by phpBB [CR] © 2001, 2006 phpBB Group.
 

Copyright © 2004-2009 by phpnuke.org.pl :: PHP-Nuke Copyright © 2004 by Francisco Burzi.
Zdjęcia ślubne
Tworzenie strony: 0.24 sekund
Zapytań: 17