Jag brukade få så mycket spam i min brevlåda varje dag att jag spenderade mer tid på att radera det sedan jag var att lägga till nytt innehåll, underhålla webbplatser, eller att starta nya webbplatser i kombination (typisk berättelse höger). En del av din webbplats spam är inte kunnat förhindras, eller är det förebyggas, men på bekostnad av användbarhet och / eller bra information att få fångas i den "dåliga grejer" också.
Ingen tvekan om, om du menar allvar med webbutveckling du kommer att vara att skapa och interagera med former på regelbunden basis. Speciellt med denna nya web 2.0 attityd alla har ... hoppla Wiz, vad är det?
CAPTCHA
CAPTCHA är antalet en metod som de flesta människor använder för att förhindra spam i dag. Vad är det?
"En CAPTCHA är en utmaning svar test som används på datorer för att kontrollera om användaren är mänskliga. En vanlig typ av CAPTCHA som används på webbplatser kräver att besökaren skriver in bokstäver och siffror av en snedvriden bild. Denna metod bygger på att det är svårt för datorer för att extrahera text från bilden medan det är mycket lätt för människor. "- Captchacreator.com
Här är några resurser för att skript så kommer du att kunna genomföra denna funktionalitet till ditt eget sätt:
Escape Data - förhindra SQL-injektioner
Capcha är usless om du lämnar din form oskyddade mot attacker. Kom ihåg att filtrera efter strängar med addslashes () eller mysql_real_escape_string ().
Också ta en titt på dessa funktioner för liknande typ av kontroller som kan vara till nytta:
- htmlspecialchars () - undgår följande tecken: &,',",>,< ... det är tecken, enkla citattecken, dubbla citattecken, mindre än och större än symboler.
- strip_tags () - tar bort alla HTML-och PHP-kod från den angivna strängen.
- htmlentities () - konverteras alla tecken till HTML-enheter motsvarande (detta är en mer fånga alla version av htmlspecialchars).
- urlencode () - kodar webbadressen passera strängar på en GET-metoden. Som jag nämnde, inte använder GET med former. Detta är användbart när du passerar användare ingående variablerna av andra skäl.
Kom ihåg att när du konverterar data så här med hjälp av någon av ovanstående funktioner kan du ångra det för läsbarhet och produktion genom att använda sin omvänd funktion. Urlencode () har till exempel urldecode () för att ångra sin verksamhet så att du kan börja använda den sträng som du skulle ha innan koda.
Kontrollera begäran metod
Kasta om ett uttalande kring din nuvarande form processor som kontroller för att se om informationen kommer från globals efter variabel. Om inte, då användaren inte tillgång till din form på det sätt du konstruerade att använda det.
-
<?php -
if ( $_SERVER [ ‘REQUEST_METHOD’ ] == ‘POST’ ) { -
//typical form processes -
} else { -
echo "The form can not be used like that" ; -
} -
?> - Ladda ner denna kod: 0305spamrequestmethod.txt
Ändra detta till GET om du använder den i stället. Jag skulle dock hög rekommenderar att du aldrig använda denna metod eftersom det är mer osäkra.
Kontrollera begäran Källa
Du bör också kontrollera att se om begäran från din egen server. Detta är en mycket vanlig metod i form missbruk vilket inte nödvändigtvis betyder att du fått spam. Om du servern blir en hel del studsade e-postmeddelanden till sin standardprogram för e-post kan du ha någon missbrukar din webbplats på detta sätt.
-
<?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" ; -
} -
?> - Ladda ner denna kod: 0305spamhostsource.txt
Använda vanliga uttryck för validering av uppgifter
Jag gillar att kontrollera uppgifter med hjälp av preg_match (eller någon av de vanliga uttrycket funktioner). Denna metod dödar en massa flugor i en smäll. Varför skriva separata funktioner för att kontrollera om en sträng är tom, sedan en annan om den gör det möjligt för nummer, och en annan om den gör det möjligt för bokstäver, och en annan till specifika området längd, och en annan ... du får det.
if (! preg_match ("/^[ A-Z0-9] (5,15 }$/", $ namn)) $ error .= "<li class=\"errors\"> Fältet Namn kan bara innehålla bokstäver och nummer (utan mellanslag) och kan bara vara upp till 15 tecken långa. </ li> ";
I preg_match jag kontrollera att namnet endast innehåller alfanumeriska värden (bokstäver) och måste vara minst 5 till 15 tecken. Om du inte uppfyller denna uppgift lämplig text läggas till $ fel.
Använda "[variabel] [dot] [lika] [text]" på detta sätt gör det möjligt för mig att hålla en kontinuerlig variabel som jag lägger till. Jag kan då kontrollera om $ fel innehåller alla data innan mitt manus innebär någon betydande frågor. Om det är fel att du kan spotta ut dem med att upprepa $ fel och ber användaren att rätta till dem. Jag sedan använda CSS till stil mitt fel som du kan se med class = \ "fel \".
Reguljära uttryck trots har en inlärningskurva på dem men de är en av de bästa verktyg som kan bidra till att förenkla ditt liv i olika situationer. Jag kommer att närmare gå in på dem på vägen men nu kan du köpa en bok eller göra vissa googla.
Den icke-tekniska återblick
-Genomföra en CAPTCHA skript.
-Escape snedstreck (och andra dåliga tecken).
-Kontrollera om uppgifterna kommer till din form använder rätt metod.
-Vill du kolla om en begäran från din egen server.
-Kontrollera data med hjälp av ett vanligt uttryck.
Det här är bara toppen på isberget för vad jag kan säga om skräppost. Det var därför jag har bestämt att göra en mini-serie av det. Under de närmaste par veckor kommer jag att föra dig närmare hur jag handskas med skräppost. Kommentera nedan eller maila mig om ditt egna skräpposten förebyggande metoder. Om det är en ny eller unik teknik jag kommer att publicera det i en framtida blogg tillsammans med en länk till din blogg. Bara skriva i kommentarerna nedan och inkludera webbadressen i webbplatsen området.





































Det bara slog mig ... att upprätta dessa om uttalanden med en dö () kan vara lättare för en snabb och smutsig metod. Som jag är säker på att de flesta av er åtminstone för nu vill ha en quickfix att bara slänga in tänka på ... Ungefär så här:
if ($ _SERVER [ 'REQUEST_METHOD']! == "POST") (die ( "form inte kan användas på det viset");)
Du kan placera den var som helst i början av ett skript för att den skall träda i kraft utan att behöva oroa dig för befintlig kod för mycket.