Zvykl jsem si tolik spamu v mé schránce každodenní že jsem vynaložit více času odstraněním pak jsem se přidává nový obsah, údržbu stránek nebo spouštění nových lokalit kombinované (typický příběh vpravo). Některé z vašich webových stránkách spamu není možné předejít, nebo je možné předejít, ale na úkor použitelnosti a / nebo správné informace získávání odchycených ve "špatné věci", jak je dobře.
Je nepochybné, pokud jste vážně web development vy budete být pro vytváření a interakci s formami na pravidelném základě. Hlavně se tento nový web 2.0 postoj každý má ... wiz jé, co to je?
CAPTCHA
CAPTCHA je číslo jedna metoda většina lidí se používají, aby se zabránilo spamu, dneska. Co je to?
"A CAPTCHA je výzvou reakci testem používaným na počítačích pro kontrolu, zda uživatel je člověk. A druhem CAPTCHA, která se používá na webových stránkách vyžaduje, aby návštěvník psát písmena a číslice zkreslený obraz. Tato metoda je založena na skutečnosti, že je obtížné pro počítače extrahovat text z obrázku, přičemž je velmi snadné pro lidi. "- Captchacreator.com
Zde je několik zdrojů na skripty, takže si budete moci provádět funkce, které do vlastního formy:
Escape údaje - zabránit SQL injekce
Capcha je usless pokud jste opouští svůj formulář nechráněné před útokem. Nezapomeňte, že filtr post struny s addslashes () nebo mysql_real_escape_string ().
Také se podíváme na tyto funkce pro další podobné druhy kontrol, které by mohly být užitečné:
- htmlspecialchars () - Úniky následující znaky: &,',",>,< ... to je ampersand, jediný citát, dvojité citace, menší než a větší než symboly.
- strip_tags () - Proužky všechny HTML a PHP kód z daného řetězce.
- htmlentities () - Převede všechny znaky jejich HTML subjektům ekvivalentní (to je více chytit všechny verze htmlspecialchars).
- urlencode () - Enkóduje URL přejít na smyčce ZÍSKAT metodou. Jak jsem se zmínil, nepoužívejte GET s forem. To je užitečné, když si uživatel absolvování vstupních proměnných z jiných důvodů.
Pamatujte si, že jednou budete takhle převést data pomocí jedné z výše uvedených funkcí, můžete se vrátit na srozumitelnost a výstup pomocí reverzní funkce. Urlencode () například urldecode () vrátit zpět do své činnosti, takže můžete začít používat řetězec, as měli byste před enkódování.
Zkontrolujte, zda žádost metoda
Projekční jedna-li výpis kolem své stávající podobě procesor, který kontroluje, zda údaje pocházejí z GLOBALS post variabilní. Pokud se tak nestane, potom není uživatel přístup k vaší podobě, jak je navržen, které mají být použity.
-
<?php -
if ( $_SERVER [ ‘REQUEST_METHOD’ ] == ‘POST’ ) { -
//typical form processes -
} else { -
echo "The form can not be used like that" ; -
} -
?> - Stáhněte si tento kód: 0305spamrequestmethod.txt
Změnit to GET Pokud používáte že místo. Nicméně, já bych tě nikdy vysoké doporučujeme používat tuto metodu, protože je více nejistá.
Zkontrolujte, zda žádost zdroj
Také byste měli zkontrolovat, zda je žádost pocházející z vašeho vlastního serveru. To je velmi běžné metody formě zneužívání, které nemusí nutně znamenat, že budete se dostávají spamu. Jste-li server se dostane hodně e-mailů odkázáni na své výchozí email budete mít někdo zneužít vaše stránky tímto způsobem.
-
<?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" ; -
} -
?> - Stáhněte si tento kód: 0305spamhostsource.txt
Použití regulárních výrazů pro data validace
Líbí se mi to zkontrolovat data pomocí preg_match (nebo některého z funkce pro regulární výrazy). Tato metoda zabíjí hodně mouchy jednou ranou. Proč psát samostatné funkce pro kontrolu, zda řetězec je prázdný, pak další, pokud to umožňuje čísel, a jiný, pokud to umožňuje alfa znaky, a jiný na konkrétní oblasti délky, a další ... dostanete na místě.
if (! preg_match ("/^[ A-z0-9] (5,15 }$/", $ name)) $ chyba .= "<li class=\"errors\"> pole Název může obsahovat pouze písmena a číslic (bez mezer) a může být až 15 znaků dlouhé. </ li> ";
V preg_match jsem ověřit, že název pole obsahuje pouze alfanumerické hodnoty (malá a velká písmena) a musí být nejméně 5 až 15 znaků. Pokud si nepřejete, aby splňovaly specifikaci příslušným textem, který zní na $ chyba.
Použití "[proměnná] [dot] [rovná] [text]" v tomto duchu mi umožňuje udržet probíhající variabilní, že jsem přidáváním. I pak můžete zkontrolovat a zjistit, jestli $ chyba obsahuje veškerá data, před mým skript nemá žádné významné dotazů. Pokud tam jsou chyby, můžete plivat jim vystavili ozvěn $ chybu a požádat uživatele, aby se o jejich opravu. I potom používat CSS stylů na mé chyby, které vidíte s class = \ "chyby \".
Regulární výrazy vyzývavě se učit na ně, ale oni jsou jedním z nejlepších nástrojů, které mohou přispět ke zjednodušení vašeho života v různých situacích. Já odjedu do Podrobněji o nich dolů na silnici, ale teď možná chcete koupit knihu, nebo udělat nějaké Googling.
Non-technické pneumatiky
-Provádět CAPTCHA skript.
-Escape lomítka (a dalších špatných znaků).
-Zkontrolujte, zda údaje se chýlí ke svému formuláři používáte správné metody.
-Zkontrolujte, zda je žádost pocházející z vašeho vlastního serveru.
-Check dat pomocí regulárního výrazu.
To je jen špičkou ledovce, pokud jde o to, co můžu říct o spam. I to je důvod, proč jsme se rozhodli udělat mini série je. Během příštích pár týdnů budu vám přinese podrobnější způsoby, jak jsem se zabývají spamu. Komentáře pod nebo e-mailu mi o svém vlastním spam preventivní metody. Pokud se jedná o novou, nebo unikátní techniku budu po ní v budoucnu blog spolu s odkazem zpět na svůj blog. Stačí napsat do poznámky níže a musí obsahovat adresu URL v poli webových stránkách.





































Je jenom vyskytly se mi ... o zřízení, jestliže tyto výkazy s zemřít () prohlášení by mohlo být snazší pro rychlé a špinavé metody. , Který jsem si jist, že většina z vás alespoň pro tuto chvíli bude chtít quickfix to prostě vyhodit palce Mějte na paměti, že ... něco takového:
if ($ _SERVER [ 'REQUEST_METHOD']! == 'POST') (die ( "v podobě nemohou být použity jako že");)
Můžete umístit kdekoliv, že na začátku skriptu pro to, aby nabývá účinnosti bez obav stávající kód příliš mnoho.