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). Използвах за да получите толкова много спам в пощенската ми кутия ежедневния разход, че съм повече време да ги изтрия след това бях на добавяне на ново съдържание, поддръжка на сайтове, или запалване нови сайтове комбиниран (типично история дясно). 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. Някои от вашия уебсайт спам не е предотвратимо, или това е предотвратимо, но на цената на използваемост и / или добра информация да се хванат в "лоши неща", както е добре.

No doubt, if you’re serious about web development you’re going to be creating and interacting with forms on a regular basis. Без съмнение, ако сте сериозно за уеб програмиране, което ще бъде създавате и взаимодействие с формите на регулярна основа. Especially with this new web 2.0 attitude every has…gee wiz, what’s that? Особено с този нов Web 2.0 отношението на всеки е способен човек ... Боже, какво е това?

CAPTCHA CAPTCHA
CAPTCHA is the number one method most people are using to prevent spam today. CAPTCHA е номер едно метод на повечето хора, които използвате, за да се предотврати спам днес. What is it? Какво е това?

“A CAPTCHA is a challenge response test used on computers to check if the user is human. "А CAPTCHA е предизвикателство отговор използвания тест за компютри, за да проверите дали потребителят е човек. A common kind of CAPTCHA that is used on websites requires that the visitor type the letters and numbers of a distorted image. Общ вид, който се използва CAPTCHA за уебсайтове изисква посетителя въведете буквите и цифрите на изкривено изображение. 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 Този метод се основава на факта, че е трудно за компютри, за да извлечете текста от картинката, докато той е много лесен за хората. "- Captchacreator.com

Here’sa few resources to scripts so you’ll be able to implement that functionality into your own forms: Here'sa малко ресурси за скриптове, така че ще бъдете в състояние да осъществят тази функционалност в своите собствени форми:

Escape Data - Prevent SQL Injections Escape данни - Без SQL инжекции
Capcha is usless if you’re leaving your form unprotected from attack. Capcha е usless ако сте напускане форма незащитени от атака. Remember to filter post strings with addslashes() or mysql_real_escape_string() . Не забравяйте да филтрирате пост нишки с addslashes () или mysql_real_escape_string ().

Also take a look at these functions for other similar kind of checks that might be useful: Също така да видиш тези функции за други подобни вид проверки, които биха могли да бъдат полезни:

  • htmlspecialchars() - Escapes the following characters: &,’,”,>,< ...that is the ampersand, single quote, double quote, less than, and greater than symbols. htmlspecialchars () - бягства на следните знаци: &,',",>,< ... това е ampersand, самотни цитат, двойни кавички, по-малко, отколкото, както и по-голяма от символи.
  • strip_tags() - Strips out all HTML and PHP code from the given string. strip_tags () - ивици всички HTML и PHP код от дадения низ.
  • htmlentities() - Converts ALL characters to their HTML entities equivalent (this is a more catch all version of htmlspecialchars). htmlentities () - конвертира всички герои за тяхното HTML образувания еквивалент (това е по-улов на всички версия на htmlspecialchars).
  • urlencode() - Encodes the URL to pass strings on a GET method. urlencode () - кодира URL да мине конците на GET метод. As I mentioned, don’t use GET with forms. Както вече споменахме, не използвайте GET с форми. This is useful when you’re passing user input variables for other reasons. Това е полезно, когато сте минаваща приноса на потребителите променливи поради други причини.

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. Не забравяйте, че след като конвертира данните, като това с помощта на един от горните функции, можете да го отмените увлекателността и продукция с помощта на неговата обратна функция. Urlencode () например е urldecode () да отмените действията си, за да можете да започнете да използвате като низ Вие ще трябва преди кодират.

Check Request Method Проверка на запитване метод
Throw an if statement around your existing form processor that checks to see if data is coming from the globals post variable. Хвърли едно изявление, ако около съществуващия си вид процесор, че проверки, за да видим дали данните, идващи от globals пост променлива. If not, then the user is not accessing your form the way you designed it to be used. Ако не, тогава потребителят не е достъп до вашите данни на начина, по който предназначени да бъдат използвани.

  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. Промяна на това GET Ако използвате, че вместо това. However, I would high recommend you never use that method as it is more insecure. Въпреки това, бих високо препоръчвам ти никога не използват този метод, тъй като е по-несигурна.

Check Request Source Проверка на искането източник
You should also check to see if the request is originating from your own server. Трябва също така да проверите, за да види дали искането е с произход от вашия собствен сървър. This is a very common method of form abuse which doesn’t necessarily mean you’ll be receiving spam. Това е много често срещана форма метода на злоупотреба, което не означава непременно, че ще се получават спам. 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. Ако сте сървър става доста bounced имейлите си по подразбиране емайла, който може да има някой, превишаване сайта си по този начин.

  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 Използването Редовни изрази за валидиране на данни
I like to check data using preg_match (or any of the regular expression functions). Харесва ми да се провери на данни чрез preg_match (или някоя от функциите регулярен израз). This method kills a lot of birds with one stone. Този метод убива много птици с един камък. 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. Защо пиша отделни функции, за да проверите дали низ е празен, то друга, ако тя позволява номера, и друга, ако тя позволява алфа герои, а друг да специфична област дължина, а друг ... ти вземем точка.

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>”; ако (! preg_match ("/^[ A-z0-9] ($ 5,15 }$/", име)) $ грешка .= "<li class=\"errors\"> В полето Име може да съдържа само букви и цифри (без интервалите) и може да бъде до 15 знака. </ да> ";

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. В preg_match съм се проверява дали името поле съдържа само буквено-цифрови стойности (случай нечувствителен) и трябва да бъде най-малко 5 до 15 знака. If you don’t meet that specification appropriate text is added to $error. Ако не отговарят, че спецификацията подходящ текст се добавя към $ грешка.

Using “[variable] [dot][equals] [text]” in this fashion allows me to keep an ongoing variable that I’m adding to. Използвайки "[променлива] [точка] [равнява] [текст]" по този начин позволява да се поддържа непрекъснат променлива ли, че добавянето За. I can then check to see if $error contains any data before my script does any significant queries. Не мога след това проверете дали $ грешка съдържа всички данни, преди да ми скрипт няма съществена запитвания. If there are errors you can spit them out by echoing $error and ask the user to correct them. Ако има грешки, можете да ги плюе от романтика $ грешка и поиска от потребителя да ги отстраним. I then use CSS to style my errors which you can see with class=\”errors\”. Аз тогава да се използва CSS стила ми грешки, които можете да видите с клас = \ "грешки \".

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. Редовен изрази defiantly имат крива на обучение по тях, но те са една от най-добрите инструменти, които може да помогне да опростите живота си в различни ситуации. 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. Аз ще отида в повече подробности за тях надолу по пътя, но за сега може да искате да си купите книга или някои Googling.

The Non-Technical Recap Нетехническо рекапитулация
-Implement a CAPTCHA script. -Прилагане на CAPTCHA скрипт.
-Escape slashes (and other bad characters). Slashes-Escape (и други лоши герои).
-Check to see if data is coming to your form using the correct method. -Проверете дали данните са следващите си форма използвайки правилния метод.
-Check to see if the request is originating from your own server. -Проверете дали искането е с произход от вашия собствен сървър.
-Check data using a regular expression. -Проверка на данни чрез редовен изразяване.

This is just the tip of the iceberg for what I can tell you about spam. Това е само върхът на айсберга за какво мога да ви кажа за спам. Thats why I’ve decided to make a mini series of it. Thats защо сте решили да направите мини-серия от нея. Over the next couple weeks I will be bringing you more detailed ways I deal with spam. През следващите няколко седмици ще бъде да ви донесат по-подробна начини да се справят с спам. Comment below or email me about your own spam preventative methods. Коментарът по-долу или имейл ми за собствения си спам превантивни методи. If it is a new or unique technique I will post it in a future blog along with a link back to your blog. Ако става дума за нови или уникална техника, аз ще го публикуваме на сайта ни в бъдеще блог заедно с връзка обратно към вашия блог. Just write in the comments below and include your URL in the website field. Само напишете в коментарите по-долу и да включите вашия URL в сайта област.


1 Comment(s) On 1 коментар (а) На

"5 Ways To Catch And Prevent Website Form Spam - Part 1" "5 Начини на улова и предотвратяване на уебсайтове Форма Спам - част 1"
  1. MyAvatars 0,2 Rob - Mar 5, 2008 Роб - 5-ти март 2008

    It just occured to me…setting up those if statements with a die() statement might be easier for a quick and dirty method. Просто ми хрумна ... създаването на тези твърдения, ако с умират () декларация може да бъде по-лесно за бърз и мръсен начин. 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: Коя съм уверен, повечето от вас поне за сега искам просто да си хвърля quickfix инча Продължавай, че има ... нещо като това:

    if ($_SERVER[‘REQUEST_METHOD’] !== ‘POST’) { die(”The form can not be used like that”); } ако ($ _SERVER [ 'REQUEST_METHOD']! == "POST") (умре ( "Формата не може да се използва такова");)

    You can put that anywhere at the beginning of a script for it to take effect without worrying about existing code too much. Вие можете да поставите навсякъде, че в началото на скрипта, за да влезе в сила без да се притеснявате за съществуващия код твърде много.



Leave A Comment: Оставете коментар:

Comments RSS Feed Коментари RSS Емисия

5 - 2 = 5 - 2 =

Custom Theme by Rob Malon | Content & Design © 2008 - Rob Malon [dot] Com. Специален тема от Роб Malon | Съдържание и дизайн © 2008 - Роб Malon [точка] СОМ. "));
"));