I used to get so much spam in my mailbox everyday that I was spending more time deleting it then I was adding new content, maintaining sites, or starting new sites combined (typical story right). 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). Some of your website spam is not preventable, or, it is preventable, but at the cost of usability and/or good information getting caught in the “bad stuff” as well. 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.

No doubt, if you’re serious about web development you’re going to be creating and interacting with forms on a regular basis. Je nepochybné, pokud jste vážně web development vy budete být pro vytváření a interakci s formami na pravidelném základě. Especially with this new web 2.0 attitude every has…gee wiz, what’s that? Hlavně se tento nový web 2.0 postoj každý má ... wiz jé, co to je?

CAPTCHA CAPTCHA
CAPTCHA is the number one method most people are using to prevent spam today. CAPTCHA je číslo jedna metoda většina lidí se používají, aby se zabránilo spamu, dneska. What is it? Co je to?

“A CAPTCHA is a challenge response test used on computers to check if the user is human. "A CAPTCHA je výzvou reakci testem používaným na počítačích pro kontrolu, zda uživatel je člověk. A common kind of CAPTCHA that is used on websites requires that the visitor type the letters and numbers of a distorted image. 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. This method is based on the fact that is difficult for computers to extract the text from the image while it is very easy for humans.” - captchacreator.com 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

Here’sa few resources to scripts so you’ll be able to implement that functionality into your own forms: Zde je několik zdrojů na skripty, takže si budete moci provádět funkce, které do vlastního formy:

Escape Data - Prevent SQL Injections Escape údaje - zabránit SQL injekce
Capcha is usless if you’re leaving your form unprotected from attack. Capcha je usless pokud jste opouští svůj formulář nechráněné před útokem. Remember to filter post strings with addslashes() or mysql_real_escape_string() . Nezapomeňte, že filtr post struny s addslashes () nebo mysql_real_escape_string ().

Also take a look at these functions for other similar kind of checks that might be useful: Také se podíváme na tyto funkce pro další podobné druhy kontrol, které by mohly být užitečné:

  • htmlspecialchars() - Escapes the following characters: &,’,”,>,< ...that is the ampersand, single quote, double quote, less than, and greater than symbols. htmlspecialchars () - Úniky následující znaky: &,',",>,< ... to je ampersand, jediný citát, dvojité citace, menší než a větší než symboly.
  • strip_tags() - Strips out all HTML and PHP code from the given string. strip_tags () - Proužky všechny HTML a PHP kód z daného řetězce.
  • htmlentities() - Converts ALL characters to their HTML entities equivalent (this is a more catch all version of htmlspecialchars). htmlentities () - Převede všechny znaky jejich HTML subjektům ekvivalentní (to je více chytit všechny verze htmlspecialchars).
  • urlencode() - Encodes the URL to pass strings on a GET method. urlencode () - Enkóduje URL přejít na smyčce ZÍSKAT metodou. As I mentioned, don’t use GET with forms. Jak jsem se zmínil, nepoužívejte GET s forem. This is useful when you’re passing user input variables for other reasons. To je užitečné, když si uživatel absolvování vstupních proměnných z jiných důvodů.

Remember, once you convert data like this using one of the above functions, you can undo it for readability and output by using its reverse function. urlencode() for example has urldecode() to undo its actions so you can begin using the string as you would have before the encode. 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í.

Check Request Method Zkontrolujte, zda žádost metoda
Throw an if statement around your existing form processor that checks to see if data is coming from the globals post variable. Projekční jedna-li výpis kolem své stávající podobě procesor, který kontroluje, zda údaje pocházejí z GLOBALS post variabilní. If not, then the user is not accessing your form the way you designed it to be used. Pokud se tak nestane, potom není uživatel přístup k vaší podobě, jak je navržen, které mají být použity.

  1. <?php
  2. if ( $_SERVER [ ‘REQUEST_METHOD’ ] == ‘POST’ ) {
  3. //typical form processes
  4. } else {
  5. echo "The form can not be used like that" ;
  6. }
  7. ?>

Change this to GET if you’re using that instead. Změnit to GET Pokud používáte že místo. However, I would high recommend you never use that method as it is more insecure. Nicméně, já bych tě nikdy vysoké doporučujeme používat tuto metodu, protože je více nejistá.

Check Request Source Zkontrolujte, zda žádost zdroj
You should also check to see if the request is originating from your own server. Také byste měli zkontrolovat, zda je žádost pocházející z vašeho vlastního serveru. This is a very common method of form abuse which doesn’t necessarily mean you’ll be receiving spam. To je velmi běžné metody formě zneužívání, které nemusí nutně znamenat, že budete se dostávají spamu. If you’re server is getting a lot of bounced emails to its default email you may have someone abusing your site in this manner. 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.

  1. <?php
  2. $source = $_SERVER [ ‘HTTP_HOST’ ] ;
  3. //or if you want to detect just the domain you can use a regular expression to filter it.
  4. $source = ereg_replace ( "^(www.)?([^.] ).[^.] $" , " \\ 2" , $_SERVER [ ‘HTTP_HOST’ ] ) ;
  5. if ( $source !== "robmalon.com" ) {
  6. echo "you are illegally accessing this script" ;
  7. } else {
  8. //typical form processes
  9. }
  10. //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).
  11. //Note: stristr() searches for the first occurrence of a string inside another string.
  12. if ( stristr ( getenv ( "HTTP_REFERER" ) , $source ) ) {
  13. //typical form processes
  14. } else {
  15. echo "you are illegally accessing this script" ;
  16. }
  17. ?>

Using Regular Expressions For Data Validation Použití regulárních výrazů pro data validace
I like to check data using preg_match (or any of the regular expression functions). Líbí se mi to zkontrolovat data pomocí preg_match (nebo některého z funkce pro regulární výrazy). This method kills a lot of birds with one stone. Tato metoda zabíjí hodně mouchy jednou ranou. Why write separate functions to check if a string is empty, then another if it allows numbers, and another if it allows alpha characters, and another to specific field length, and another…you get the point. 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)) $error .= “<li class=\”errors\”>The Name field can only contain letters and numbers (no spaces) and can only be up to 15 characters long.</li>”; 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> ";

In the preg_match I am checking that the name field only contains alphanumeric values (case insensitive) and needs to be at least 5 to 15 characters in length. 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ů. If you don’t meet that specification appropriate text is added to $error. Pokud si nepřejete, aby splňovaly specifikaci příslušným textem, který zní na $ chyba.

Using “[variable] [dot][equals] [text]” in this fashion allows me to keep an ongoing variable that I’m adding to. 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 can then check to see if $error contains any data before my script does any significant queries. I pak můžete zkontrolovat a zjistit, jestli $ chyba obsahuje veškerá data, před mým skript nemá žádné významné dotazů. If there are errors you can spit them out by echoing $error and ask the user to correct them. Pokud tam jsou chyby, můžete plivat jim vystavili ozvěn $ chybu a požádat uživatele, aby se o jejich opravu. I then use CSS to style my errors which you can see with class=\”errors\”. I potom používat CSS stylů na mé chyby, které vidíte s class = \ "chyby \".

Regular expressions defiantly have a learning curve on them but they are one of the best tools that can help simplify your life in a variety of situations. 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. I’ll go into more detail about them down the road but for now you may want to buy a book or do some Googling. Já odjedu do Podrobněji o nich dolů na silnici, ale teď možná chcete koupit knihu, nebo udělat nějaké Googling.

The Non-Technical Recap Non-technické pneumatiky
-Implement a CAPTCHA script. -Provádět CAPTCHA skript.
-Escape slashes (and other bad characters). -Escape lomítka (a dalších špatných znaků).
-Check to see if data is coming to your form using the correct method. -Zkontrolujte, zda údaje se chýlí ke svému formuláři používáte správné metody.
-Check to see if the request is originating from your own server. -Zkontrolujte, zda je žádost pocházející z vašeho vlastního serveru.
-Check data using a regular expression. -Check dat pomocí regulárního výrazu.

This is just the tip of the iceberg for what I can tell you about spam. To je jen špičkou ledovce, pokud jde o to, co můžu říct o spam. Thats why I’ve decided to make a mini series of it. I to je důvod, proč jsme se rozhodli udělat mini série je. Over the next couple weeks I will be bringing you more detailed ways I deal with spam. Během příštích pár týdnů budu vám přinese podrobnější způsoby, jak jsem se zabývají spamu. Comment below or email me about your own spam preventative methods. Komentáře pod nebo e-mailu mi o svém vlastním spam preventivní metody. If it is a new or unique technique I will post it in a future blog along with a link back to your blog. Pokud se jedná o novou, nebo unikátní techniku budu po ní v budoucnu blog spolu s odkazem zpět na svůj blog. Just write in the comments below and include your URL in the website field. Stačí napsat do poznámky níže a musí obsahovat adresu URL v poli webových stránkách.


1 Comment(s) On 1 komentář (ů) Dne

"5 Ways To Catch And Prevent Website Form Spam - Part 1" "5 způsobů, jak držky a zabránit Website Formulář Spam - Část 1"
  1. MyAvatars 0,2 Rob - Mar 5, 2008 Rob - 5 března 2008

    It just occured to me…setting up those if statements with a die() statement might be easier for a quick and dirty method. 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. Which I’m sure most of you at least for now would want a quickfix to just toss in. Keep that in mind…Something like this: , 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(”The form can not be used like that”); } if ($ _SERVER [ 'REQUEST_METHOD']! == 'POST') (die ( "v podobě nemohou být použity jako že");)

    You can put that anywhere at the beginning of a script for it to take effect without worrying about existing code too much. 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.



Leave A Comment: Zanechat komentář:

Comments RSS Feed Komentáře RSS feed

5 Minus 4 = 5 Minus 4 =

Custom Theme by Rob Malon | Content & Design © 2008 - Rob Malon [dot] Com. Vlastní téma Rob Malon | Content & Design © 2008 - Rob Malon [dot] com. "));
"));