Kiedyś się tak dużo spamu w mojej skrzynce codziennego, że byłem wydatków więcej czasu, usuwając je potem byłem dodawania nowych treści, utrzymania witryny, lub rozpoczęcia nowych miejsc łączone (typowa historia prawej). Niektóre witryny internetowej jest spam nie można zapobiec, lub jest zapobiec, ale na koszt użycia i / lub dobre informacje otrzymuję złowionych w "złe rzeczy" as well.
Bez wątpienia, jeśli poważnie internetowych rozwoju masz zamiar zostać tworzenia i interakcji z formularzy w sposób regularny. Specjalnie z tej nowej web 2.0 ma ... co postawę Gee czarodziej, co to jest?
CAPTCHA
CAPTCHA jest numer jeden sposób większość ludzi jest używany w celu zapobieżenia spam dziś. Co to jest?
"A CAPTCHA jest wyzwaniem odpowiedzi na test używanych komputerów, aby sprawdzić, czy użytkownik jest człowiekiem. Wspólna rodzaj CAPTCHA, który jest używany na stronach internetowych wymaga, aby odwiedzający wpisz litery i cyfry na zniekształcony obraz. Metoda ta opiera się na fakcie, że jest trudny dla komputerów, aby wyodrębnić tekst z obrazka, natomiast jest bardzo łatwe dla ludzi. "- Captchacreator.com
Oto kilka środków na skrypty dzięki czemu będziemy w stanie realizować funkcje, które na własne formy:
Escape danych - SQL injection zapobiec
Capcha jest usless jeśli pozostawiając formę niezabezpieczone przed atakiem. Pamiętaj, aby filtr po smyczki z addslashes () lub mysql_real_escape_string ().
Również przyjrzeć się tych funkcji na innych podobnego rodzaju kontroli, które mogą być przydatne:
- htmlspecialchars () - Escapes następujących znaków: &,',",>,< ... że jest ampersand, pojedynczy cudzysłów, podwójny cudzysłów, mniejsze i większe niż symbole.
- strip_tags () - Taśmy obecnie wszystkie kodu HTML i PHP z danego łańcucha.
- htmlentities () - Konwertuje wszystkie znaki na ich podmioty równoważne HTML (jest to bardziej połowu wszystkich wersji htmlspecialchars).
- urlencode () - Koduje URL ciągi przejść na metodę GET. Jak już wspomniałem, nie korzystają z form GET. Jest to przydatne, jeśli użytkownik przechodzi zmiennych wejściowych z innych powodów.
Należy pamiętać, że po tym jak konwertować dane za pomocą jednej z wyżej wymienionych funkcji, można ją cofnąć w celu zachowania czytelności i wyjściowych za pomocą jej funkcji odwrotnej. Urlencode () na przykład urldecode (), aby cofnąć jego działania, aby móc rozpocząć korzystanie jako ciąg to masz przed kodowania.
Sprawdź wniosek metody
Wyrzuci, jeżeli oświadczenie wokół istniejącej formie, że procesor sprawdza, czy dane pochodzące z GLOBALS po zmiennej. Jeśli nie, to użytkownik nie ma dostępu do Twojego formularza sposób zaprojektowany, aby był używany.
-
<?php -
if ( $_SERVER [ ‘REQUEST_METHOD’ ] == ‘POST’ ) { -
//typical form processes -
} else { -
echo "The form can not be used like that" ; -
} -
?> - Pobierz ten kod: 0305spamrequestmethod.txt
Zmień to GET, jeśli używasz, że zamiast. Jednak, chciałbym polecić wysokiej nigdy nie używać tej metody, gdyż jest bardziej niepewna.
Sprawdź wniosek source
Należy również sprawdzić, czy wniosek jest pochodząca z własnego serwera. Jest to metoda bardzo często formy nadużyć, które nie musi koniecznie oznaczać, będziesz otrzymywać spam. Jeśli serwer jest otrzymuję wiele e-maili do odbijania jej domyślny adres e-mail może być ktoś nadużywa swojej witryny w ten sposób.
-
<?php -
$source = $_SERVER [ ‘HTTP_HOST’ ] ; -
//or if you want to detect just the domain you can use a regular expression to filter it. -
$source = ereg_replace ( "^(www.)?([^.] ).[^.] $" , " \\ 2" , $_SERVER [ ‘HTTP_HOST’ ] ) ; -
if ( $source !== "robmalon.com" ) { -
echo "you are illegally accessing this script" ; -
} else { -
//typical form processes -
} -
//The referrer should also be from your own domain…Likewise, if there is no referral then the user obviously isnt using your form correctly (so we dont have to check for that). -
//Note: stristr() searches for the first occurrence of a string inside another string. -
if ( stristr ( getenv ( "HTTP_REFERER" ) , $source ) ) { -
//typical form processes -
} else { -
echo "you are illegally accessing this script" ; -
} -
?> - Pobierz ten kod: 0305spamhostsource.txt
Korzystanie z wyrażeń regularnych do walidacji danych
Lubię sprawdzać dane przy użyciu preg_match (lub dowolnego wyrażenia regularnego funkcji). Ta metoda zabija wiele ptaków z jednym kamieniu. Dlaczego pisać oddzielne funkcje, aby sprawdzić, czy ciąg jest pusty, a potem innym, jeżeli pozwala numery, a inny, jeśli pozwala alfa znaków, a drugi do konkretnych długości pola, a innym ... Ci punktu.
if (! preg_match ("/^[ A-z0-9] (5,15 }$/", $ nazwa)) $ error .= "<li class=\"errors\"> polu Nazwa może zawierać tylko litery i numery (bez spacji) i może być tylko do 15 znaków. </ li> ";
W preg_match Ja sprawdzanie, czy pole Nazwa zawiera tylko wartości alfanumerycznych (liter) i musi być co najmniej 5 do 15 znaków długości. Jeśli nie spełniają odpowiednich specyfikacji, że tekst jest dodawany do $ błędu.
Korzystanie z "[zmienna] [dot] [równe] [tekst]" w ten sposób pozwala mi utrzymać stały zmienna, że mam do dodania. I może następnie sprawdzić, czy zawiera błąd $ wszelkie dane, zanim script nie moje wszelkich istotnych zapytań. Jeżeli występują błędy można napluć im przez odzwierciedlając $ błędu i poprosi użytkownika, aby je skorygować. I wtedy użyć stylów CSS, aby moje błędy, które widać z class = \ "błędy \".
Wyrażeń regularnych defiantly mają krzywej uczenia się na nich, ale są one jednym z najlepszych narzędzi, które mogą pomóc uprościć swoje życie w różnych sytuacjach. I'll przejść do bardziej szczegółowo o nich w dół drogi, ale na razie można kupić książkę lub zrobić kilka guglanie.
Nietechnicznego recap
-Wdrożenie CAPTCHA skryptu.
-Escape ukośniki (i innych złych znaków).
-Sprawdź, czy dane zbliża się do formy używając prawidłowe metody.
-Sprawdź, czy wniosek jest pochodząca z własnego serwera.
-Sprawdzanie danych za pomocą wyrażeń regularnych.
To tylko wierzchołek góry lodowej, za co mogę powiedzieć na temat spamu. Thats why I już zdecydowała się mini serii go. W ciągu następnych kilku tygodni będzie przyciągają bardziej szczegółowe metody postępowania ze spamem. Komentarz poniżej lub napisz do mnie na temat własnej spam metod zapobiegawczych. Jeśli jest to nowy lub unikalną technikę Ja je opublikować w przyszłym blogu wraz z linkiem z powrotem do swojego bloga. Wystarczy napisać w komentarzach poniżej i zawierać adres URL w polu na stronie internetowej.





































To po prostu wystąpił do mnie ... jeśli powołanie tych oświadczeń o śmierć () oświadczenie może być łatwiejsze dla brudne i szybki sposób. Która Mam na pewno większość z Was przynajmniej na razie będzie chcą quickfix tylko podrzucanie cala keep that in mind ... coś takiego:
if ($ _SERVER [ 'REQUEST_METHOD']! == 'POST') (die ( "Formularz nie może być używana tak");)
Możesz umieścić w dowolnym miejscu, że na początku skryptu, aby wejść w życie bez martwienia się o istniejący kod zbyt wiele.