Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]modyfikacja skryptu, ban neostrady
gokugo
post 6.01.2010, 10:55:16
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 16.07.2008

Ostrzeżenie: (0%)
-----


Jestem zupełnie zielony z PHP i liczę na Waszą pomoc. Mam skrypt na stronie <a href="http://www.skps.wroclaw.pl">koła przewodników sudeckich</a> umożliwiający dodawanie komentarzy pod systemem newsów. Mam kilku "upierdliwców" którzy psują całą zabawę jednakże ich ban jest niemożliwy ponieważ korzystają z neostrady. Czy istnieje jakiś sposób na zbanowanie użytkowników neo?? Fragment mojego kodu:

Kod
   /* DODAWANIE KOMENTARZA */
       case add_kom:
           $_GET['no']=intval($_GET['no']);
           $banfile = file("$newspath/ban.txt");
           $ip = $_SERVER["REMOTE_ADDR"];
           $ban = "false";
           foreach($banfile as $linia){
               $linia = explode("||", $linia);
               if($linia[0] == $ip){ $ban = "true"; }
           }
           if($ban == "true"){
               $print_center = news_wiadomosc("Przepraszamy, ale nie masz zezwolenia na dodanie komentarza, ponieważ twoje IP ($ip) zostało zablokowane przez administratora.
   [<a href=\"".$config["adres"]."\">wróć do newsów</a>]");
           }
           else{
               if($_GET["do"] == "save"){
                   if($_POST['kom_autor']=="" || $_POST['komentarz']==""){
                       $print_center = news_wiadomosc("Wypełnij wszystkie wymagane pola!
   [<a href=\"java script:history.back()\">wróć</a>]");
                   }
                   else{
                       $filename = "$newspath/komentarze/".$_GET["no"];
                       if(file_exists($filename)){
                           $kom_autor = $_POST["kom_autor"];
                           $kom_email = $_POST["kom_email"];
                           $komentarz = $_POST["komentarz"];
                           $kom_autor = strip_tags($kom_autor);
                           $kom_email = strip_tags($kom_email);
                           $komentarz = strip_tags($komentarz);
                           $kom_autor = str_replace("|", "\\|", $kom_autor);
                           $kom_email = str_replace("|", "\\|", $kom_email);
                           $komentarz = str_replace("|", "\\|", $komentarz);
                           $kom_autor = preg_replace("'\n|\r\n|\r'si", "", $kom_autor);
                           $kom_email = preg_replace("'\n|\r\n|\r'si", "", $kom_email);
                           $komentarz = preg_replace("'\n|\r\n|\r'si", "
   ", $komentarz);
                           $numer = max_l_plik(0, "||", $filename)+1;
  
                           $file = fopen($filename, "a+");
                           flock($file, 2);
                           $puts = "$numer||$komentarz||$kom_autor||$kom_email||".time()."||$ip||\n";
                           fputs($file, $puts);
                           flock($file, 3);
                           fclose($file);
                           $print_center = news_wiadomosc("Twój komentarz został dodany.
   [<a href=".$config["adres"].">wróć do newsów</a>]");
                       }
                       else{
                           $print_center = news_wiadomosc("Nie można dodać komentarza - brak pliku z baz± danych do tego newsa.
   [<a href=".$config["adres"].">wróć do newsów</a>]");
                       }
                   }
               }
               else{
                   $print_center.= "
                   <form action=\"". $config["adres"]."function=add_kom&no=".$_GET["no"]."&do=save\" method=post name=formularz>
                   *Autor:
   <input type=text name=\"kom_autor\">
  
                   Email:
   <input type=text name=\"kom_email\">
  
                   *Komentarz:
   ";
                   if($config["emoty_kom"] == "tak"){ $print_center.= list_emots($newspath,"komentarz")."
   "; }
                   $print_center.= "<textarea style=\"width:300; height:150\" name=\"komentarz\"></textarea>
                  
   * - pola wymagane
  
  
                   <input type=submit value=\"dodaj\">
                  
   <a href=\"".$config["adres"]."\">[rezygnuj]</a>
                   </form>
                   ";
               }
           }            
       break;
   }


Na forum znalazłem coś takiego: http://forum.php.pl/lofiversion/index.php/t27026.html ale nie wiem jak wpleść ten kod w zasadniczy przedstawiony wyżej aby się to zamknęło w całość
Go to the top of the page
+Quote Post
Pilsener
post 6.01.2010, 12:30:01
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Ban na IP generalnie jest prosty do obejścia. Próbuj różnych metod, np. ciastka. Niestety na idiotów nie ma dobrego lekarstwa, pocieszające jest to, że wpisy łatwo się usuwa a dodanie ich zajmuje dzieciom trochę czasu, więc kasujesz aż im się znudzi smile.gif

Inna sprawa to boty - może to one powodują problemy? Warto zadbać o filtry antyspamowe. Wygląda mi to na kawałek PS NEws, na początek poczytaj o filtrach antyspamowych.
Go to the top of the page
+Quote Post
Fifi209
post 6.01.2010, 12:39:20
Post #3





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Dodaj np. captcha + ograniczenie czasowe, przykładowo jeden komentarz co 10 minut dla jednego ip.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Spawnm
post 6.01.2010, 12:43:44
Post #4





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




captcha + aktywacja wpisów przez moda ;]
i w panelu input shoutbox do zatwierdzania masowego, co nie zatwierdzone to wylatuje.
I niech sobie spamuje, szybko mu się znudzi jak zobaczy że brak efektów jego pracy.
Go to the top of the page
+Quote Post
gokugo
post 6.01.2010, 12:49:28
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 16.07.2008

Ostrzeżenie: (0%)
-----


Cytat
Niestety na idiotów nie ma dobrego lekarstwa, pocieszające jest to, że wpisy łatwo się usuwa a dodanie ich zajmuje dzieciom trochę czasu


jest to kilku starych emerytów (dosłownie) którzy potrafią wyskrobać coś obraźliwego i ten sam tekst wklejać jako komentarze pod newsami przez pół nocy... a administratorzy każdego poranka tracą po 30-50 min na ich usuwanie sad.gif Tak to jest PS NEws smile.gif

Cytat
Dodaj np. captcha + ograniczenie czasowe, przykładowo jeden komentarz co 10 minut dla jednego ip.


wygląda rozwiązanie na naprawdę sensowne smile.gif Jesteś mi w stanie powiedzieć jak taki skrypt (zapis) miałby wyglądać i gdzie go wkleić questionmark.gif
Go to the top of the page
+Quote Post
ucho
post 6.01.2010, 13:10:11
Post #6





Grupa: Zarejestrowani
Postów: 300
Pomógł: 32
Dołączył: 31.07.2006

Ostrzeżenie: (0%)
-----


Użyj $_SERVER['REMOTE_HOST'] lub gethostbyaddr($ip) i zbanuj po domenie wszystkich z neo. A później ewentualnie dodawaj wyjątki np. dla zalogowanych użytkowników. Na pewno są też jakieś RBL które blokują wszystkie zmienne ip.

Go to the top of the page
+Quote Post
darko
post 6.01.2010, 13:47:00
Post #7





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


https://admin.recaptcha.net/accounts/signup/?next= <- rejestrujesz się, później określasz adresy stron, na których ma być aktywna usługa recaptcha, generujesz dwa klucze: publiczny i prywatny i czytasz api/helpa, jak z tego skorzystać. Ja akurat wykorzystuję gotowe klasy w Zendzie: Zend_Service_ReCaptcha oraz Zend_Form_Element_Captcha <-- całość zajmuje jakieś 4 linijki kodu i problem z głowy.

Ten post edytował darko 6.01.2010, 13:48:57


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
gokugo
post 6.01.2010, 14:12:17
Post #8





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 16.07.2008

Ostrzeżenie: (0%)
-----


Cytat
https://admin.recaptcha.net/accounts/signup/?next= <- rejestrujesz się, później określasz adresy stron, na których ma być aktywna usługa recaptcha, generujesz dwa klucze: publiczny i prywatny i czytasz api/helpa, jak z tego skorzystać. Ja akurat wykorzystuję gotowe klasy w Zendzie: Zend_Service_ReCaptcha oraz Zend_Form_Element_Captcha <-- całość zajmuje jakieś 4 linijki kodu i problem z głowy.


z tego co wiem recaptcha generuje kody obrazkowe i jest skuteczna w odniesieniu do bootów. A tu tak jak wcześniej wspominałem jest problem kilku upierdliwych mocherów, którzy tak naprawdę mają niewielkie pojęcie o tym jak to wszystko działa, i których przez to że są podłączeni do neo nie da się zbanować.

Cytat
Użyj $_SERVER['REMOTE_HOST'] lub gethostbyaddr($ip) i zbanuj po domenie wszystkich z neo. A później ewentualnie dodawaj wyjątki np. dla zalogowanych użytkowników. Na pewno są też jakieś RBL które blokują wszystkie zmienne ip.


To też jest doskonałe rozwiązanie gdyż ze stałych bywalców nikt poza nimi z neo nie korzysta smile.gif Jesteś mi w stanie powiedzieć tylko gdzie ten kod powinienem dokładnie wkleić i jaką on powinien mieć treść.
Go to the top of the page
+Quote Post
darko
post 6.01.2010, 14:17:06
Post #9





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


To jak są tacy starsi to może nie dowidzą, ja sam mam problemy z odczytaniem napisów które generuje recaptcha, a młody jestem i wzrok mam dobry winksmiley.jpg


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Fifi209
post 6.01.2010, 14:26:07
Post #10





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(gokugo @ 6.01.2010, 12:49:28 ) *
wygląda rozwiązanie na naprawdę sensowne smile.gif Jesteś mi w stanie powiedzieć jak taki skrypt (zapis) miałby wyglądać i gdzie go wkleić questionmark.gif


Miałem na myśli, bardziej takie prościutkie captcha wyraźne i w ogóle, niech boty czytają w końcu to ludzie spamują.
Ograniczenie czasowe - zapisujesz sobie np. do sesji, lecz bym polecał bazę danych i po ip rozpoznawać. Komu będzie się chciało non stop resetować neo?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
gokugo
post 6.01.2010, 18:02:26
Post #11





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 16.07.2008

Ostrzeżenie: (0%)
-----


Cytat
Użyj $_SERVER['REMOTE_HOST'] lub gethostbyaddr($ip) i zbanuj po domenie wszystkich z neo. A później ewentualnie dodawaj wyjątki np. dla zalogowanych użytkowników. Na pewno są też jakieś RBL które blokują wszystkie zmienne ip.


to jak Panowie?? Powie mi ktoś jakiego kodu mam użyć i gdzie wkleić aby zbanować neo questionmark.gif
Go to the top of the page
+Quote Post
Pilsener
post 6.01.2010, 22:58:35
Post #12





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


1. Musisz się dowiedzieć, z jakiej puli pochodzą adresy IP, jeżeli pula to np. 11.22.X.X gdzie x i x to dowolne liczby to niestety - zbanujesz zbyt dużą liczbę osób.
2. Potem pozostaje wyrażenie regularne, lub rozbić adres explodem po "." i sprawdzać każdą część.

Powinno też pomóc:
- ograniczenie dodawania wpisu do np. jednego co godzinę
- ograniczenie długości wpisu
- ograniczenie możliwych do wpisania znaków czy tagów html
- cenzor
- ograniczenie liczby nowych linijek (popularny spam znakami nowej linii)
- ciastka

By zmienić IP trzeba się przelogować, usunięcie/modyfikacja ciacha też nie każdemu jest znana, więc zawsze paru rencistów mniej.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.07.2025 - 00:06