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 каждый имеет отношения ... Gee Wiz, что это?

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: Вот несколько ресурсов для скриптов так что вы сможете выполнить эту функцию в свои собственные формы:

Escape Data - Prevent SQL Injections Побег данных - предотвратить 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 () - удается избегать следующие символы: &,',",>,< ... то есть амперсанд, одинарная кавычка, двойная кавычка, меньше, а больше, чем символы.
  • 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. Бросай, если заявление вокруг существующей форме процессор, который проверяет, есть ли данные из глобальных после переменной. 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. Если сервер получает много письма к его электронной почты по умолчанию вам, возможно, кто-то злоупотребляет вашем сайте в этом порядке.

  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 ("/^[-Z0-9] (5,15 }$/", $ имя)) $ ошибку .= "<li class=\"errors\"> В поле" Имя может содержать только буквы и цифры (без пробелов), и можно только до 15 символов. </ 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. В 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. Регулярные выражения вызывающе имеют кривой обучения на них, но они являются одним из лучших инструментов, которые помогут упростить вашу жизнь в самых разных ситуациях. 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. Я пойду в более подробно о них вниз по дороге, но сейчас вы можете купить книгу или какую-то поиск в Google.

The Non-Technical Recap Нетехнических команды
-Implement a CAPTCHA script. Осуществлять CAPTCHA сценарий.
-Escape slashes (and other bad characters). -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') (Die ( "Форма не может быть использован как");)

    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 канал

8 - 3 = 8 - 3 =

Custom Theme by Rob Malon | Content & Design © 2008 - Rob Malon [dot] Com. Пользовательские темы Боб Malon | Содержание И Дизайн © 2008 - Боб Malon [точка] Ком. "));
"));