Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Wyłapywanie przekleństw w formularzach
Szunaj85
post
Post #1





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Mam skrypt w którym w tablicy trzymam zbiór przekleństw i brzydkich słów. Za pomocą pętli i if-ów sprawdzam czy w formularzu nie znajdują się jakieś słowa z tablicy. Skrypt działa dobrze jednak łatwo go ominąć.
Przykładowo moje brzydkie słowo to: "przykład".
W takiej postaci skrypt zadziała, jednak jak dam "p_r_z_y_k_ł_a_d", "p*r*z*y*k*ł*a*d", "p-r-z-y-k-ł-a-d"
lub choćby "p_rzykład", p*rzykład, p-rzykład już nie. Jak przed czymś takim się uchronić.
Możliwe, że trzeba wykorzystać wyrażenia regularne, ale nie wiem jak je napisać. sadsmiley02.gif
Nie chodzi tu o to żeby skrypt wszystko i wszystkich blokował tak jak jest z niektórymi cenzorami, jednak chciałbym żeby był bardziej rozbudowany.
Tu podałem przykład ominięcia skryptu, który mi jest znany jeśli ktoś zna inne sposoby proszę o ich pokazanie i o rozwiązania. biggrin.gif

Ten post edytował Szunaj85 12.06.2010, 17:14:28


--------------------
Jeśli Ci pomogłem wciśnij Jeśli mi pomożesz wcisnę
Go to the top of the page
+Quote Post
zend
post
Post #2





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


str_replace i zamieniasz wszystkie "dziwne" znaczki na "nic" i dopiero wtedy sprawdzasz

Ten post edytował zend 12.06.2010, 17:23:16
Go to the top of the page
+Quote Post
kartin
post
Post #3





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

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


Nie ma na 100% skutecznego sposobu, no chyba, że będziesz moderował posty.

Zawsze można pomieszać przkyład znaki , wpisać z błędem, literówką itp. np. przyklad można też zastąpić kilka znaków przy..ad a i tak każdy będzie wiedział o co chodzi.

Co nie wymyślisz to zawsze znajdzie się obejście aaevil.gif


--------------------
Jeśli ten post pomógł to kliknij przycisk po lewej stronie.
Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ...
Go to the top of the page
+Quote Post
lobopol
post
Post #4





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


No niestety 100% filtra nie zrobisz, ba jak ktoś będzie chciał to ominie każdy (np. zmieniając kodowanie znaków czy zamiast przekleństwo napisze PRZE KLEŃSTW0 czy jeszcze inną metodę), jeżeli zrobisz zbyt mocne filtrowanie to też zaczną pojawiać się kwiatki, np. jeżeli zamienisz wszystkie dziwne znaki na nic z pominięciem spacji to wy raz dalej przejdzie, ale jeżeli uwzględnisz spację przy usuwaniu znaków to będziesz cenzurował środki wyrazów np. porachuje zostanie częściowo ocenzurowane. Cenzura takich wyrazów przez automat jest bardzo ciężka, a wręcz niemożliwa.


--------------------
Go to the top of the page
+Quote Post
konole
post
Post #5





Grupa: Zarejestrowani
Postów: 275
Pomógł: 32
Dołączył: 21.03.2006
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


Wpisuj różne kombinacje, odmiany, kawałki, np. kurw, urwa. itd. No niestety, głupoty człowieka nie pokonasz.
Go to the top of the page
+Quote Post
Szunaj85
post
Post #6





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


zend Twoje rozwiązanie byłby całkiem całkiem gdyby nie fakt, że przekręt z przekleństwem może wyglądać choćby tak: "p-r-z-y-k-ł-a-d", "p.r.z.y.k.ł.a.d", p/r/z/y/k/ł/a/d", itp, a takich znaków jak myślnik, kropka, ukośnik, itp nie mogę usuwać.
Cytat
jeżeli zamienisz wszystkie dziwne znaki na nic z pominięciem spacji to wy raz dalej przejdzie, ale jeżeli uwzględnisz spację przy usuwaniu znaków to będziesz cenzurował środki wyrazów np. porachuje zostanie częściowo ocenzurowane.

konole Bazując na Twoim przykładzie "urwa" w przykładowym zdaniu "Urwałaś się z choinki". Dlatego ja jestem świadomy, że z takimi końcówkami trzeba uważać. lobopol dobrze mówi.
Cytat
No niestety 100% filtra nie zrobisz

Tak jak napisałem chciałbym żeby był bardziej rozbudowany, a nie 100% skuteczny.
W związku z tym jakiś konkretne propozycje?

Widzę, że temat ucichł. Wydaje mi się jednak, że warto go jeszcze podrążyć. sadsmiley02.gif
Może ktoś zna jeszcze jakieś inne rozwiązania. winksmiley.jpg

Ten post edytował Szunaj85 12.06.2010, 19:22:16


--------------------
Jeśli Ci pomogłem wciśnij Jeśli mi pomożesz wcisnę
Go to the top of the page
+Quote Post
Hoku
post
Post #7





Grupa: Zarejestrowani
Postów: 49
Pomógł: 2
Dołączył: 6.07.2010

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


na przekręt z .,/-+|_ polecam regex ;]
zrobić
$brudna= explode(" ", $string);
$czysta =preg_replace('/[^a-zA-Zńąćśźżó곣ӯŹĆĄŚĘŃ ]/', '',$string);
zostaje jedynie spacja i polskie znaki dziwnie to wygląda ale działa na polskie znaki nie miałem innego pomysłu...
a potem $tabliczka= explode(" ",$czysta);
sprawdzać w 1 pętli $tabliczka[$i] z bazą wulgarnych.
i tylko wtedy i wyłącznie wtedy gdy $czysta[$i] jest wulgarna podmienić w tablicy $brudna[ $i]="cenzura";
$j2=++$j;
i w nr. 2 pętli możesz $tabliczka[$j].$tabliczka[$j2] sprawdzać do bazy wulgarnych.
i tylko wtedy i wyłącznie wtedy gdy $tabliczka$j].$tabliczka[$j2] jest wulgarna podmienić w tablicy $brudna[$j]="cenzura" $brudna[$j2]="" ;

i w $brudna tablice łaczymy $wyniczek= implode(" ",$brudna);
i $wyniczek jest dobry.
raczej usunie jedynie wulgaryzmy bo raczej do głowy przychodzi mi tylko usunięcie zdania że "pierd Oli był naprawdę głośny".
ale już "Urwałaś się z choinki" nie naruszy smile.gif

jeśli ktoś zrobi k**wa to już musiałbyś albo cenzurować słowa zawierające *+ w sobie w całości lub sprawdzać podobieństwo innymi słowami. a to by raczej ostro muliło ...

Ten post edytował Hoku 10.07.2010, 00:31:43
Go to the top of the page
+Quote Post
Szunaj85
post
Post #8





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


Hoku Wybacz, ale jakoś mało to dla mnie zrozumiałe. sadsmiley02.gif Mógłbyś to jaśniej opisać lub podać jakiś przykład?
I właśnie jak napisać skrypt, który by blokował takie brzydkie wyrazy jakie podałem wyżej w przykładach, np.
p-r-z-y-k-ł-a-d, (czyli mimo, że są jakieś znaki między literami) posiadając jedynie tablicę z normalnymi brzydkimi wyrazami?

Ten post edytował Szunaj85 15.07.2010, 13:08:28


--------------------
Jeśli Ci pomogłem wciśnij Jeśli mi pomożesz wcisnę
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 Aktualny czas: 22.08.2025 - 03:11