Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: spamery?
Forum PHP.pl > Forum > PHP
Stron: 1, 2
KCG
Ja wiem, że to jest niewygodne itd. ale mi po prostu już nic nie pomaga.
Athlan to na razie odpuszczę, bo myślę, że jednak już obrazek lepiej wygląda.
marcio, co do ps2 to nie skumałem? a co do linków to próbowałem smile.gif
Bo chyba jest jakaś gotowa klasa do captcha? Jakoś nic nie mogę znaleźć, poza tym, jeśli coś ktoś używał, to zawsze lepsze sprawdzone winksmiley.jpg
marcio
Captcha chcesz moge dac ci moj kod generujacy obrazek tu mozesz zobaczyc jak wyglada
http://www.marcio.szu.pl/token.php

Co do P.S2 to masz XSS na stronie smile.gif
.radex
KCG, ja rozumiem, że nie możesz już sobie dać z tym rady, ale nie korzystaj z CAPTCHA-y!

Lekturka: http://pornel.net/captcha
KCG
radex, czytałem 2 razy wcześniej, zanim pisałem tutaj smile.gif Tylko, jak nic nie pomaga, to co mam zrobić? Np. rapid korzysta i jakoś tam daje radę;)

marcio, skąd do tego doszedłeś?
marcio
Doszedlem do czego??

Wejdz na linki przezemnie podany i zjedz na sam dol gdzie masz stronnicowanie widzisz co sie dzieje zamykam ci tag wpisujac "> + <!--- lub bez i dziala html
KCG
Tak, tylko chyba sam to wpisałeś? I nie widzę, aby działo się coś złego (<h1> tekstu nie powiększyło).

PS Doszedłeś do tego adresu smile.gif
LonelyKnight
Te boty na Twojej stronie walą prawie samymi URL'ami. Napisz prostą funkcję, która będzie sprawdzała ile jest tekstu we wpisie, który nie jest odnośnikiem w stosunku do to tekstu, który jest odnośnikiem. Jeśli będzie to np. >80% odnośników to traktuj jako spam.
marcio
Cytat
Tak, tylko chyba sam to wpisałeś? I nie widzę, aby działo się coś złego (<h1> tekstu nie powiększyło).

No a jak inaczej nie widzisz ze rozwala strone jak bym troche posiedzial przy tym to moze nawet bym ci strone rozjechal smile.gif lepiej popraw
KCG
Ogólnie, jak ktoś wpisuje sobie coś w adresie, żeby stronę rozwalić, to niech będzie dumny z siebie - reszcie to nie szkodzi; ale dzięki za info winksmiley.jpg
LonelnyKnight w sumie dobrze mówisz, pokombinuję w tym kierunku.
marcio
Cytat
reszcie to nie szkodzi;

ALe jak bedzie mozliwosc kardziezy cookie mysle ze zaszkodzi

Zreszta to twoja sprawa i sadzi to o tobie jak sie przejmujesz o dzialanie skryptu smile.gif tez sie z tego smialem ale mialem ta samo sytuacje i byl XSS na cookie naszczescie juz wszystko zalatane smile.gif
KCG
Stwierdzam, że nie szkodzi, co nie zmienia faktu, że warto poprawić, chociażby dla własnej satysfakcji smile.gif

Szczerze to myślałem, że łatwiej się tego pozbyć. Możesz coś podpowiedzieć? Pobieram aktualny adres z wszystkimi zmiennymi i stąd to się bierze.
marcio
Filtruj <, > i " za pomoca str_replace() zamieniaj na puste znaki albo htmlspecialchars() ale nie zawsze to drugie sie sprawdza smile.gif
KCG
Zmieniłem, te znaki na '', ale efekt jest widoczny dalej:
http://pytak.no-ip.org/~trudny/new_moto/bo...dro...%3C/h1%3E
Z tym, że teraz nie można nic wykonać?
marcio
Sorki ale nie bylo mnie wiec nie moglem odpisac ogolnie teraz nie bede zagladal do mojego kodu ale co pamietam blad polega na tym ze tak gdzie tworzysz linki do nastepnych stron nie filtrujsze zmiennych z get'a

Wejdz tu:
http://pytak.no-ip.org/~trudny/new_moto/bo...dro...%3C/h1%3E
POtem kliknij na nastepna strone i masz taki link: http://pytak.no-ip.org/~trudny/new_moto/bo...6;/h1&str=1 widzisz link u gory zamyka znaczniki wstrzykuje html i masz to w get'cie wiec musisz filtorwac zmienne ktore podajsz do linku

Np robisz tak:
  1. <?php
  2. $zmienna = $_GET['zmienna'];
  3. $zmienna = str_replace(array("<", ">", "\"", "'", "\", "%"), array("", "", "", "", "", ""), $zmienna);
  4. ?>

Teraz powinno byc good jak nie to pokaz jak generujesz linki pokarze ci jak

Ok teraz napewno nic nie bedzie

EDIT:
WIesz ze jest pelno wyszukiwarek z bugiem XSS wystarczy sobie zrobic funkcje z kodu poodanego wyzej i filtorwac wszystkie get'y z wyszukiwarki i juz bedzie bezpieczna wiem bo testowalem smile.gif
KCG
no ja tak nie mam bezpośrednio tych zmiennych pobieranych:
  1. <?php
  2. $return = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
  3. $return = urldecode($return);
  4. $return = str_replace('<','',$return);
  5. $return = str_replace('>','',$return);
  6. $return = str_replace('"','',$return);
  7. $return = str_replace('!','',$return);
  8. ?>

to tak w skróconej formie, bo funkcja jest bardziej rozbudowana (jeśli dodaję zmienną str, to ona usuwa ją z adresu)
marcio
ALe jesli dalej dziala ten "trick" to znaczy ze robisz cos zle smile.gif chyba ze juz nie dziala
KCG
No dalej działa, dlatego kod pokazałem smile.gif
marcio
Pokaz jak tworzysz linki do podstron a jak nie wyszukuj wszystko co sie znajduje za ? i sprawdzaj za pomoca strstr() czy sa nie dozwolone znaki jesli sa otwierasz jakas strone 404.html i tyle smile.gif
LonelyKnight
Ehh durne XSS a postów że hej.... Strony numerujesz chyba liczbami? Całkowitymi? To weź zrzutuj na integer'a i już. Nie wiem nad czym tu sie rozwodzić, jakieś str_replace i podobne zabawy.

Kod
$intSiteID = (int)$_GET['siteID'];
marcio
@up jakby to bylo takie chop siup to bysmy tyle postow nie pisali smile.gif bo to nie koniecznie nie musi byc wina zmiennej od stronnicowania niech pokaze kod smile.gif tyle to ja tez wiem ze jest rzutowanie typow
LonelyKnight
Większość akcji na stronach rozpoznawanych jest po ID - wtedy rzutujemy. Jak chcesz umożliwić wpisywanie np. komentarzy i zawęzić dostępne znaczniki HTML to strip_tags i drugi parametr tej funkcji. Jeśli potrzebna bardziej zaawansowana i skuteczna obrona to LINK. I tyle... nie wiem nad czym tu się rozwodzić tongue.gif
.radex
Cytat
Większość akcji na stronach rozpoznawanych jest ID


No, nie zgodzę się. Wchodzimy w erę NiceURL's, gdzie wszystko powinno być czytelne.

Coraz rzadziej się stosuje:

strona.pl/blog.php?id=562

na rzecz:

strona.pl/blog/moj-nowy-wpis
LonelyKnight
Fakt ale wtedy proste strip_tags wystarczy a nie jakieś zabawy w stylu:

  1. <?php
  2. $zmienna = $_GET['zmienna'];
  3. $zmienna = str_replace(array("<", ">", "\"", "'", "\", "%"), array("", "", "", "", "", ""), $zmienna);
  4. ?>


Poza tym, przynajmniej ja, robię w ten sposób, że nawet jak używam rewrite, to w taki sposób aby mieć linki w takiej postaci:

Kod
strona.pl/blog/321,moj-nowy-wpis


...i wtedy dalej wczytuję dane sprawdzając ID a tego co jest po ID nawet nie przekazuję do aplikacji - to jest dla botów wyszukiwarek i userów.
marcio
Cytat(LonelyKnight @ 15.06.2008, 21:59:05 ) *
Większość akcji na stronach rozpoznawanych jest po ID - wtedy rzutujemy. Jak chcesz umożliwić wpisywanie np. komentarzy i zawęzić dostępne znaczniki HTML to strip_tags i drugi parametr tej funkcji. Jeśli potrzebna bardziej zaawansowana i skuteczna obrona to LINK. I tyle... nie wiem nad czym tu się rozwodzić tongue.gif

Jak to by bylo takie latwe jak tobie sie wydaje to by bylo 60% mniej owned'ow w sieci widac ze chyba tym sie nie bawiles
.radex
Cytat(LonelyKnight @ 15.06.2008, 22:46:35 ) *
Poza tym, przynajmniej ja, robię w ten sposób, że nawet jak używam rewrite, to w taki sposób aby mieć linki w takiej postaci:

Kod
strona.pl/blog/321,moj-nowy-wpis


...i wtedy dalej wczytuję dane sprawdzając ID a tego co jest po ID nawet nie przekazuję do aplikacji - to jest dla botów wyszukiwarek i userów.


Nie lubię takich pół-rozwiązań. Albo ID, albo tekst - nie ma sensu pakować dwóch rzeczy, skoro można użyć tylko jednej.
LonelyKnight
Cytat(marcio @ 15.06.2008, 22:48:13 ) *
Jak to by bylo takie latwe jak tobie sie wydaje to by bylo 60% mniej owned'ow w sieci widac ze chyba tym sie nie bawiles


Byłoby mnie "owned'ow" gdyby ludzie piszący te strony mieli jakiekolwiek pojęcie o PHP a nie korzystali ze sklejki popularnych skryptów by xxxx i działających tylko dlatego, że 100x pytali na forum jak je połączyć.

Jak podasz mi jeden przykład XSS który przejdzie przez HTMLpurifier to odejdę ze spuszczoną głową ;-) bo argument "widać, że się tym nie bawiłeś" to średnio trafiony.

-- edit

Cytat
Nie lubię takich pół-rozwiązań. Albo ID, albo tekst - nie ma sensu pakować dwóch rzeczy, skoro można użyć tylko jednej.


Hymm... niby można ale np. wyszukiwanie newsów po tytule w bazie nie będzie tak wydajne jak wyszukiwanie po ID, nie mówiąc o tym, że musisz zapewnić unikalność klucza, co w przypadku tytułów może być problemem... Znowu stosowanie samego ID nie jest user friendly i Google friendly ;-)
marcio
Nie wiem co to za narzedzie nie uzywam go ani o nim nigdy nie slyszalem wole wlasne rozwiazania to raz a dwa sa ataki XSS(html injection) gdzie mozna wstrzyknac kod css bez uzuwania <scrtipt> ani html'owych tagow takich jak < czy > nie wiem jak sie to robi ale mialem taki blad w moim cms'ie kolega mi pokazal i zalatalem ale nie pamietam jak...
pyro
Cytat(LonelyKnight @ 15.06.2008, 22:56:32 ) *
Byłoby mnie "owned'ow" gdyby ludzie piszący te strony mieli jakiekolwiek pojęcie o PHP a nie korzystali ze sklejki popularnych skryptów by xxxx i działających tylko dlatego, że 100x pytali na forum jak je połączyć.

Jak podasz mi jeden przykład XSS które przejdzie przez HTMLpurifier to odejdę ze spuszczoną głową ;-) bo argument "widać, że się tym nie bawiłeś" to średnio trafiony.


Cytat
A security vulnerability was found in versions of HTML Purifier earlier
than 3.1.0 and 2.1.4. Affected versions include but are not
limited to 3.0.0, 3.1.0rc1 and 2.1.3.
Although no exploit was found in the wild for this vulnerability, please
update as quickly as possible.


Taaa.... po co wtedy XSS...
LonelyKnight
I co z tego wynika? Był bug jak chyba w każdej realnej aplikacji ale moim zdaniem ta klasa to najskuteczniejsze obecnie narzędzie przeciw XSS. Jeśli znasz lepszą chętnie zobaczę.
pyro
Cytat(LonelyKnight @ 15.06.2008, 23:08:34 ) *
I co z tego wynika? Był bug jak chyba w każdej realnej aplikacji


Był... i może jeszcze jakiś jest...

Cytat(LonelyKnight @ 15.06.2008, 23:08:34 ) *
ale moim zdaniem ta klasa to najskuteczniejsze obecnie narzędzie przeciw XSS. Jeśli znasz lepszą chętnie zobaczę.


jasne... popatrz sobie, strip_tags();" title="Zobacz w manualu PHP" target="_manual, htmlentities" title="Zobacz w manualu PHP" target="_manual
marcio
Cytat(LonelyKnight @ 15.06.2008, 23:08:34 ) *
I co z tego wynika? Był bug jak chyba w każdej realnej aplikacji ale moim zdaniem ta klasa to najskuteczniejsze obecnie narzędzie przeciw XSS. Jeśli znasz lepszą chętnie zobaczę.



Cytat(pyro @ 15.06.2008, 23:12:44 ) *
Był... i może jeszcze jakiś jest...



jasne... popatrz sobie, [manual\]strip_tags();\[/manual\], [manual\]htmlentities\[/manual\]

@pyro racja wole sobie sam cos napisac z bugiem niz uzyc gotowca i nie wiedziec nawet dlaczego szlo obejsc aplikacje nie rozumiem ludzi ktorzy uzywaja gotowe klasy mowia ze maja racje a jak im sie ktos wlamie placze ludzie sie ucza na wlasnych bledach nie na cudzych

P.S @LonelyKnight nie sugeruje ze sie lepiej od ciebie znam.....
pyro
Cytat(marcio @ 15.06.2008, 23:17:22 ) *
@pyro racja wole sobie sam cos napisac z bugiem niz uzyc gotowca i nie wiedziec nawet dlaczego szlo obejsc aplikacje nie rozumiem ludzi ktorzy uzywaja gotowe klasy mowia ze maja racje a jak im sie ktos wlamie placze ludzie sie ucza na wlasnych bledach nie na cudzych


po co pisać z bugiem? Pisz tak aby ich nie było... wiele programistów z lenistwa po napisaniu kodu nie sprawdza go pod kątem bezpieczeństwa... to jest główny powód powstawania security bugów

Lonely, które z tych przykladow na tej stronce co podałeś omija strip_tags?

// EDIT

@LonelyKnight chyba sam sobie odpowiedział i usunął posta tongue.gif
marcio
Cytat
po co pisać z bugiem? Pisz tak aby ich nie było... wiele programistów z lenistwa po napisaniu kodu nie sprawdza go pod kątem bezpieczeństwa... to jest główny powód powstawania security bugów

Fakt zawsze sprawdzam ale w niektorych sprawach nie jestes az tak kompetentny zeby wylapac bug smile.gif staram sie jak moge

Cytat
@LonelyKnight chyba sam sobie odpowiedział i usunął posta

No faktycznie
LonelyKnight
Cytat(pyro @ 15.06.2008, 23:12:44 ) *


Cytat(pyro)
po co pisać z bugiem? Pisz tak aby ich nie było... wiele programistów z lenistwa po napisaniu kodu nie sprawdza go pod kątem bezpieczeństwa... to jest główny powód powstawania security bugów


... i widzisz pyro w tym momencie zaryzykuję stwierdzenie, że Twoje aplikacje są dziurawe. Jest tyle ataków XSS, że strip_tags nie jest najlepszym rozwiązaniem, wręcz jednym z gorszych. Jeśli stosujesz wyłącznie takie zabezpieczenia to w momencie kiedy komuś będzie zależało, żeby Ci namieszać to zrobi to. Nawet w manualu na który tu się powołujesz piszą...

Cytat
Because strip_tags() does not actually validate the HTML, partial, or broken tags can result in the removal of more text/data than expected.


...a to znaczy również to, że czasami usuwa za dużo ale czasami również za mało.

-- edit

Usunąłem posta żeby dopisać odpowiedź na Twojego tongue.gif Teraz masz całość

--- edit 2

Sprawdź LINK i poczytaj komentarze w manualu pod strip_tags. Dla mnie koniec tematu - nie mam zamiaru więcej Cię uświadamiać ;-)
pyro
Cytat("LonelyKnight")
... i widzisz pyro w tym momencie zaryzykuję stwierdzenie, że Twoje aplikacje są dziurawe.


... i widzisz @LonelyKnight nigdy (chyba) nie widziałeś żadnej z mojej aplikacji, używam własnych funkcji zabezpieczających i dotąd nikomu nie udało się ich obejść, oczywiście nie mówie ze w moich skryptach na 100% nie ma luk... zawsze istnieej jakaś szansa, że tkwi bug, ale jak dotychczas nikomu to sie nie udało

// ADD

Lonely, które z tych przykladow na tej stronce co podałeś omija strip_tags? Nie mówię tego ironicznie, chętnie poczytam smile.gif
marcio
Cytat
Jeśli stosujesz wyłącznie takie zabezpieczenia to w momencie kiedy komuś będzie zależało, żeby Ci namieszać to zrobi to. Nawet w manualu na który tu się powołujesz piszą..

W sumie lepszym rozwiazaniem to juz jest htmlspecialchars() smile.gif
KCG
Użyłem strip_tags(), wcale to lepiej nie wygląda, ale chyba pod względem funkcjonalności będzie ok.
LonelyKnight
Cytat(pyro @ 15.06.2008, 23:30:11 ) *
... i widzisz @LonelyKnight nigdy (chyba) nie widziałeś żadnej z mojej aplikacji, używam własnych funkcji zabezpieczających i dotąd nikomu nie udało się ich obejść, oczywiście nie mówie ze w moich skryptach na 100% nie ma luk... zawsze istnieej jakaś szansa, że tkwi bug, ale jak dotychczas nikomu to sie nie udało

// ADD

Lonely, które z tych przykladow na tej stronce co podałeś omija strip_tags? Nie mówię tego ironicznie, chętnie poczytam smile.gif


To nasze zdania na ten temat są bardzo różne smile.gif bo uważam, że pisanie własnych funkcji zabezpieczających jest ryzykowne. Nie można być specjalistą we wszystkim a bezpieczeństwo aplikacji to temat rzeka. Żeby być w tym dobrym to trzeba się temu poświecić i mieć dostęp do informacji, które nie są publicznie dostępne. Tak samo jak np. pisanie własnych funkcji kryptograficznych jest już całkowitym bezsensem i jest bezpieczne chyba tylko z punktu widzenia autora, tak i tutaj lepiej skorzystać ze sprawdzonych rozwiązań, które będą bezpieczniejsze niż nasze wypociny, choć nie wątpi, że jesteś dobrym programistą.

A co do przykładu omijającego strip_tags to masz notkę, w linku który podałem w poprzednim poscie - na stronie HTMLPurifier.
pyro
Cytat(LonelyKnight @ 15.06.2008, 23:41:40 ) *
To nasze zdania na ten temat są bardzo różne smile.gif bo uważam, że pisanie własnych funkcji zabezpieczających jest ryzykowne. Nie można być specjalistą we wszystkim a bezpieczeństwo aplikacji to temat rzeka. Żeby być w tym dobrym to trzeba się temu poświecić i mieć dostęp do informacji, które nie są publicznie dostępne. Tak samo jak np. pisanie własnych funkcji kryptograficznych jest już całkowitym bezsensem i jest bezpieczne chyba tylko z punktu widzenia autora, tak i tutaj lepiej skorzystać ze sprawdzonych rozwiązań, które będą bezpieczniejsze niż nasze wypociny, choć nie wątpi, że jesteś dobrym programistą.

A co do przykładu omijającego strip_tags to masz notkę, w linku który podałem w poprzednim poscie - na stronie HTMLPurifier.


Nie... źle mnie zrozumiałeś... nie pisze własnych funkcji zabezpieczających w sensie regexów czy czegoś podobnego, pisze funkcje zabezpieczające korzystające z istniejących funkcji, np.

  1. <?php
  2. function safe_string($str)
  3. {
  4. $str = strip_tags($str);
  5. $str = htmlspecialchars($str);
  6. {
  7. $str = addslashes($str); // mysql_real_escape_string...
  8. }
  9. return $str;
  10. }
  11. ?>
KCG
Wracając do tematu:
  1. <?php
  2. $liczba1 = mt_rand(1,9);
  3. $liczba2 = mt_rand(1,9);
  4. echo '<input type="hidden" name="liczba1" value="'.$liczba1.'" />';
  5. echo '<input type="hidden" name="liczba2" value="'.$liczba2.'" />';
  6. echo '<dt><label for="liczby">'.$liczba1.' + '.$liczba2.' =</label></dt>';
  7. echo '<dd><input type="text" name="liczby" id="liczby" maxlength="2" /></dd>';
  8. ?>

Później sprawdzam, czy liczba1 + liczba2 = liczby i działa, tylko nawet boty to obliczają.
pyro
Cytat(KCG @ 18.06.2008, 15:17:36 ) *
Wracając do tematu:
  1. <?php
  2. $liczba1 = mt_rand(1,9);
  3. $liczba2 = mt_rand(1,9);
  4. echo '';
  5. echo '';
  6. echo ''.$liczba1.' + '.$liczba2.' =';
  7. echo '';
  8. ?>

Później sprawdzam, czy liczba1 + liczba2 = liczby i działa, tylko nawet boty to obliczają.


Każdy kto by chciał by ominął te imitację zabezpieczenia, to tak naprawde żadne zabezpieczenie tongue.gif
KCG
Zmienić symbole na słowa, czy coś innego?
simperium
ja u siebie zrobiłem tak ( zadziałało w 100%):
1. zmieniłem adres tak, by nie występowało w nim słowo guestbook , a więc księga gości jest na www.serwer.cośtam/ksiega.php
(ten ruch, nie wiedzieć czemu, odrzucił mi prawie cały spam, ale nie pytajcie czemu, bo nie wiem... po prostu: działa smile.gif )

2. zablokowałem możliwość dodawania wpisów z adresu 127.0.0.1
Nie wiem czemu, ale spam bardzo często wchodził mi z tego adresu, nie wiem, czy to nie kwestia jakieś zabawki analogicznej do TORa (proxy) ?

3. Zadałem proste pytanie w stylu: co jest stolicą Polski, czy jakoś tak.

4. A na koniec użyłem zamiany słów viagra na wigor, czy środek-na-przeczyszczenie winksmiley.jpg , xxx na coś tam, że generalnie nazwy linków stały się zabawne, no a co najważniejsze, wcale nie odnosiły do owych stron winksmiley.jpg

U mnie to wystarczyło, ale dodam na koniec (co pewnie jest całkiem istotne) strona jest rzadko odwiedzana (średnio 10-20wizyt dziennie).

Pozdr!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.