Jeg plejede at få så meget spam i min postkasse hverdag, at jeg brugte mere tid på at slette det da jeg var tilføje nyt indhold, vedligeholde websteder, eller starte nye websteder kombineres (typisk historie højre). Nogle af dit websted spam er ikke forebygges, eller er det forebygges, men på bekostning af anvendelighed og / eller god information bliver fanget i den "dårlige ting" så godt.
Ingen tvivl om, hvis du mener det alvorligt med web-udvikling du skal skabe og interagere med former på regelmæssig basis. Især med dette nye web 2.0 holdning hver har ... ih! Wiz, hvad er det?
CAPTCHA
CAPTCHA er antallet en metode, de fleste mennesker bruger til at forhindre spam i dag. Hvad er det?
"En CAPTCHA er en udfordring svar testen anvendes på computere for at kontrollere, om brugeren er menneskelige. En almindelig form for CAPTCHA, der bruges på hjemmesider kræver, at den besøgende skrive bogstaver og tal i et forvrænget billede. Denne metode er baseret på det faktum, at det er vanskeligt for computere at trække teksten ud af billedet, mens det er meget let for mennesker. "- Captchacreator.com
Her er nogle ressourcer til scripts, så vil du være i stand til at gennemføre denne funktionalitet til dit eget former:
Escape data - at undgå SQL-injektioner
Capcha er usless hvis du forlader din form ubeskyttet mod angreb. Husk at filtrere efter strenge med addslashes () eller mysql_real_escape_string ().
Også tage et kig på disse funktioner for andre lignende form for kontrol, som kan være nyttige:
- htmlspecialchars () - udflyder følgende tegn: &,',",>,< ... det er det tegn, enkelt anførselstegn, dobbelt anførselstegn, mindre end og større end symboler.
- strip_tags () - Strips alle HTML og PHP-koden fra den givne streng.
- htmlentities () - Konverterer alle tegn til deres HTML-entiteter tilsvarende (dette er en mere fange al-versionen af htmlspecialchars).
- urlencode () - Koder webadressen til at videregive strenge på en GET-metoden. Som jeg nævnte, må du ikke bruge GET med former. Dette er nyttigt, når du passerer bruger inputvariable af andre grunde.
Husk, når du konvertere data, som denne ved hjælp af en af ovennævnte funktioner, kan du fortryde det til læsbarheden og output ved at bruge sin reverse funktion. Urlencode () for eksempel har urldecode () til at fortryde sine handlinger, så du kan begynde at bruge strengen som De ville have, før de koder.
Check anmodning metode
Kast en hvis erklæring omkring din nuværende form processor, der kontrollerer, om data kommer fra den globals post variable. Hvis ikke, så brugeren ikke adgang til din form den måde, du designet den til at blive brugt.
-
<?php -
if ( $_SERVER [ ‘REQUEST_METHOD’ ] == ‘POST’ ) { -
//typical form processes -
} else { -
echo "The form can not be used like that" ; -
} -
?> - Hent denne kode: 0305spamrequestmethod.txt
Ændre dette til GET hvis du bruger det i stedet. Jeg vil dog høj anbefaler, at du aldrig bruge denne metode, da det er mere usikre.
Check anmodning kilde
Du bør også kontrollere, om anmodningen er stammer fra din egen server. Dette er en meget almindelig metode i form misbrug, som ikke nødvendigvis betyder, vil du modtage spam. Hvis du server er at få en masse afviste e-mails til sin standard-e-mail, du måtte have nogen misbruger dit websted på denne måde.
-
<?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" ; -
} -
?> - Hent denne kode: 0305spamhostsource.txt
Ved hjælp af regulære udtryk for data validering
Jeg kan godt lide at kontrollere data via preg_match (eller nogen af de regulære udtryk funktioner). Denne metode dræber en masse fluer med ét smæk. Hvorfor skrive adskilte funktioner for at kontrollere, om en streng er tom, og derefter en anden, hvis den tillader numre, og en anden, hvis den gør det muligt alpha tegn, og en anden til specifikke område længde, og en anden ... du får det punkt.
if (! preg_match ("/^[ A-z0-9] (5,15 }$/", $ navn)) $ error .= "<li class=\"errors\"> I feltet Navn kan kun indeholde bogstaver og tal (ingen mellemrum) og kan kun op til 15 tegn. </ li> ";
I preg_match jeg kontrollere, at navnet området kun indeholder alfanumeriske værdier (små bogstaver) og skal være mindst 5 til 15 tegn i længden. Hvis du ikke opfylder denne specifikation er relevant tekst er føjet til $ fejl.
Brug "[variable] [dot] [lig] [tekst]" på denne måde tillader mig at holde en løbende variabel, som jeg tilføjer til. Jeg kan derefter kontrollere, om $ fejl indeholder alle data, før min scriptet ikke nogen væsentlig forespørgsler. Hvis der er fejl du kan spytte dem ud med at gentage $ fejl og beder brugeren om at rette dem. Jeg derefter bruge CSS til at style min fejl, som du kan se med class = \ "fejl \".
Regulære udtryk defiantly har en indlæringskurve på dem, men de er en af de bedste værktøjer, der kan bidrage til at forenkle dit liv i en række forskellige situationer. Jeg vil gå mere i detaljer om dem nede ad vejen, men for nu kan du vil købe en bog eller gøre nogle google.
Den ikke-teknisk resumé
-Gennemføre en CAPTCHA script.
-Escape skråstreg (og andre dårlige karakterer).
-Kontroller at se, om data kommer til din form ved hjælp af den korrekte metode.
-Kontroller at se, om anmodningen er stammer fra din egen server.
-Check data ved hjælp af et regulært udtryk.
Dette er blot toppen af isbjerget for, hvad jeg kan fortælle dig om spam. Thats hvorfor jeg har besluttet at gøre en mini-udgaven af det. I løbet af de næste par uger, jeg vil bringe dig mere detaljeret, hvordan jeg håndtere spam. Kommentar nedenfor eller email mig om dine egne spam forebyggende metoder. Hvis det er en ny eller enestående teknik jeg vil sende det i en fremtidig blog sammen med et link tilbage til din blog. Bare skriv i kommentarerne nedenfor og omfatter din webadresse på hjemmesiden område.





































It just faldt mig ... at oprette dem, hvis udsagn med en dør () kan være lettere for en hurtig og beskidt metode. Som jeg er sikker på, at de fleste af jer i hvert fald for nu ønsker en quickfix til lige smide i. Hold det i tankerne ... noget som dette:
if ($ _SERVER [ 'REQUEST_METHOD']! == 'POST') (die ( "Skemaet kan ikke bruges gerne, at");)
Du kan lægge, at et hvilket som helst sted i begyndelsen af et script for, at den kan træde i kraft uden at bekymre sig om eksisterende kode for meget.