Am folosit pentru a obţine atât de mult spam în cutia mea poştală de zi cu zi pe care am mai mult timp de cheltuieli a fost de a şterge-o apoi am fost adăugarea de conţinut nou, menţinerea de site-uri, incepand de noi site-uri sau combinate (uzual poveste dreapta). Unele din site-ul dvs. nu este spam prevenite, sau, este evitată, dar la costul de utilizare şi / sau obţinerea de informaţii bine prins în "lucruri rele", de asemenea.
Fără îndoială, dacă sunteţi serios despre dezvoltare web veţi fi crearea si interactiunea cu forme în mod regulat. Mai ales cu acest nou web 2.0 atitudine are fiecare cal ... wiz, ce-i asta?
CAPTCHA
CAPTCHA este numărul unu metodă de cele mai multe persoane sunt utilizaţi pentru a preveni spam de azi. Ce este?
"Un CAPTCHA este o provocare de răspuns de pe computerele de test utilizate pentru a verifica dacă utilizatorul este uman. Un fel de comune de CAPTCHA care este utilizat de pe site-uri de Web cere ca tipul de vizitator de litere şi numere dintr-o imagine distorsionată. Această metodă se bazează pe faptul că este dificil pentru computere pentru a extrage textul din imagine în timp ce este foarte uşor pentru om. "- Captchacreator.com
Iata cateva resurse pentru a script-uri de aşa veţi putea să pună în aplicare ca funcţionalitate în propriile forme:
Evadare de date - SQL preveni preparate injectabile
Capcha este usless dacă sunteţi dvs. de a pleca de la forma neprotejat atac. Amintiţi-vă să filtru de post cu siruri de caractere addslashes () sau mysql_real_escape_string ().
De asemenea, să aruncaţi o privire la aceste funcţii similare pentru alte tipuri de controale care ar putea fi de folos:
- htmlspecialchars () - scapă următoarele caractere: &,',",>,< ... care este ampersand, singur citat, citat dublu, mai puţin de, şi mai mare de simboluri.
- strip_tags () - benzi toate cod HTML şi PHP de la şirul dat.
- htmlentities () - conversia tuturor caractere pentru a lor HTML entităţi echivalente (aceasta este o versiune mai prind toate de htmlspecialchars).
- urlencode () - codifică URL-ul pentru a transmite siruri de caractere pe o metoda GET. După cum am menţionat, nu folosesc GET cu forme. Acest lucru este util atunci când sunteţi utilizator care trece variabilele de intrare pentru alte motive.
Nu uitaţi, după ce vă place acest conversia de date, folosind una dintre funcţiile de mai sus, puteţi să anulaţi-o pentru lizibilitate şi de ieşire prin utilizarea funcţiei sale de revers. Urlencode () de exemplu a urldecode () pentru a anula acţiunile sale, astfel încât să puteţi începe folosind şirul de caractere ca ar trebui, înainte de a codifica.
Verificaţi Cerere de metoda
Arunca o declaraţie în jurul tău, dacă existente forma procesor că verificările de date, pentru a vedea dacă vine de la post globals variabilă. Dacă nu, atunci utilizatorul nu vă accesează formularul de felul în care este proiectat pentru a fi utilizate.
-
<?php -
if ( $_SERVER [ ‘REQUEST_METHOD’ ] == ‘POST’ ) { -
//typical form processes -
} else { -
echo "The form can not be used like that" ; -
} -
?> - Descarca acest cod: 0305spamrequestmethod.txt
GET pentru a schimba acest lucru, dacă utilizaţi ca în loc. Cu toate acestea, am ridicat-ar recomandăm să nu utilizaţi această metodă, deoarece este mai nesigure.
Verificaţi Cerere de sursă
Ar trebui de asemenea să verificaţi, pentru a vedea dacă cererea este provenite de la propriul dvs. server. Aceasta este o metoda foarte comună formă de abuz, care nu înseamnă neapărat că veţi fi primirea de spam. Dacă server-se o multime de email-uri returnate său implicit de e-mail pentru a te putea avea cineva abuzând de pe site-ul dvs. în acest mod.
-
<?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" ; -
} -
?> - Descarca acest cod: 0305spamhostsource.txt
Utilizarea expresiilor regulate pentru date de validare
Îmi place să verifice, folosind date preg_match (sau oricare din funcţiile de expresie regulată). Această metodă ucide o mulţime de păsări cu unul de piatra. De ce scrie funcţii separate pentru a verifica dacă un şir de caractere este gol, apoi un alt dacă se permite numere, şi dacă se permite un alt alfa de caractere, şi un alt domeniu specific pentru lungime, şi ... să-un alt punct.
dacă (! preg_match ("/^[ A-z0-9] (5,15 }$/", $ nume)) $ eroare .= "<li class=\"errors\"> Nume de domeniu poate conţine doar litere şi numere (fără spaţii) şi poate fi de până la 15 de caractere. </ li> ";
În preg_match Sunt de verificare de nume de domeniu care conţine numai valori alfanumerice (majuscule / litere mici) şi trebuie să fie de cel puţin 5 la 15 caractere lungime. Dacă nu vă satisface specificaţia că este cazul de tip text se adaugă la $ eroare.
Utilizarea "[variabila] [punct] [egal] [text]", în acest mod de a-mi permite să o variabilă în curs de desfăşurare care sunt adăugaţi la. Nu pot verifica apoi pentru a vedea dacă $ eroare conţine nici un fel de date înainte de script-ul nu-mi orice semnificative interogări. Dacă există erori puteţi să le scuipa de $ sonor de eroare şi să solicite utilizatorului să le corectaţi. Am folosi apoi pentru a CSS stilul meu de erori pe care le puteţi vedea cu clasa = \ "erori \".
Expresii regulate defiantly au o curbă de învăţare pe ele dar sunt unul dintre cele mai bune instrumente care pot ajuta procesul de viaţă într-o varietate de situaţii. Voi merge în mai multe detalii despre ei pe drum, dar de acum poate doriţi să cumpere o carte sau faci unele Googling.
Non-tehnice de recapitulare
-Implementarea unui script de CAPTCHA.
Escape-slashes (şi alte rele de caractere).
-Verificaţi pentru a vedea dacă a datelor este de a veni la dvs., folosind formularul, metoda corect.
-Verificaţi pentru a vedea dacă cererea este provenite de la propriul dvs. server.
Verificaţi-date printr-o expresie regulata.
Acesta este doar vârful de iceberg pentru ceea ce pot să vă spun despre spam. Asta am de ce aţi decis să faceţi o serie de mini-o. In urmatoarele câteva săptămâni, mi se vor aduce mai multe modalităţi detaliate Eu face cu spam. Comentariul de mai jos sau e-mail-mi despre propriile metode preventive de spam. Dacă este o nouă tehnică de unic sau voi post-l într-un viitor blog, împreună cu un link inapoi la blog-ul. Doar scrie în comentariile de mai jos şi include URL-ul dvs. în domeniul site-ul web.





































A apărut doar la mine ... de înfiinţare, dacă aceste declaraţii cu o muri () declaraţie ar putea fi mai uşor pentru o metodă rapidă şi murdar. Care sunt cele mai sigur de tine, cel puţin pentru acum ar fi nevoie de un quickfix doar pentru a se zvârcoli inch Păstraţi în minte că ... ceva de genul:
dacă ($ _SERVER [ 'REQUEST_METHOD']! == 'POST') (die ( "Formularul nu poate fi folosit ca asta");)
Puteţi pune oriunde că de la începutul unui script pentru a avea efect fără a avea grija de cod existent prea mult.