Използвах за да получите толкова много спам в пощенската ми кутия ежедневния разход, че съм повече време да ги изтрия след това бях на добавяне на ново съдържание, поддръжка на сайтове, или запалване нови сайтове комбиниран (типично история дясно). Някои от вашия уебсайт спам не е предотвратимо, или това е предотвратимо, но на цената на използваемост и / или добра информация да се хванат в "лоши неща", както е добре.
Без съмнение, ако сте сериозно за уеб програмиране, което ще бъде създавате и взаимодействие с формите на регулярна основа. Особено с този нов Web 2.0 отношението на всеки е способен човек ... Боже, какво е това?
CAPTCHA
CAPTCHA е номер едно метод на повечето хора, които използвате, за да се предотврати спам днес. Какво е това?
"А CAPTCHA е предизвикателство отговор използвания тест за компютри, за да проверите дали потребителят е човек. Общ вид, който се използва CAPTCHA за уебсайтове изисква посетителя въведете буквите и цифрите на изкривено изображение. Този метод се основава на факта, че е трудно за компютри, за да извлечете текста от картинката, докато той е много лесен за хората. "- Captchacreator.com
Here'sa малко ресурси за скриптове, така че ще бъдете в състояние да осъществят тази функционалност в своите собствени форми:
Escape данни - Без SQL инжекции
Capcha е usless ако сте напускане форма незащитени от атака. Не забравяйте да филтрирате пост нишки с addslashes () или mysql_real_escape_string ().
Също така да видиш тези функции за други подобни вид проверки, които биха могли да бъдат полезни:
- htmlspecialchars () - бягства на следните знаци: &,',",>,< ... това е ampersand, самотни цитат, двойни кавички, по-малко, отколкото, както и по-голяма от символи.
- strip_tags () - ивици всички HTML и PHP код от дадения низ.
- htmlentities () - конвертира всички герои за тяхното HTML образувания еквивалент (това е по-улов на всички версия на htmlspecialchars).
- urlencode () - кодира URL да мине конците на GET метод. Както вече споменахме, не използвайте GET с форми. Това е полезно, когато сте минаваща приноса на потребителите променливи поради други причини.
Не забравяйте, че след като конвертира данните, като това с помощта на един от горните функции, можете да го отмените увлекателността и продукция с помощта на неговата обратна функция. Urlencode () например е urldecode () да отмените действията си, за да можете да започнете да използвате като низ Вие ще трябва преди кодират.
Проверка на запитване метод
Хвърли едно изявление, ако около съществуващия си вид процесор, че проверки, за да видим дали данните, идващи от globals пост променлива. Ако не, тогава потребителят не е достъп до вашите данни на начина, по който предназначени да бъдат използвани.
-
<?php -
if ( $_SERVER [ ‘REQUEST_METHOD’ ] == ‘POST’ ) { -
//typical form processes -
} else { -
echo "The form can not be used like that" ; -
} -
?> - Изтеглете този код: 0305spamrequestmethod.txt
Промяна на това GET Ако използвате, че вместо това. Въпреки това, бих високо препоръчвам ти никога не използват този метод, тъй като е по-несигурна.
Проверка на искането източник
Трябва също така да проверите, за да види дали искането е с произход от вашия собствен сървър. Това е много често срещана форма метода на злоупотреба, което не означава непременно, че ще се получават спам. Ако сте сървър става доста bounced имейлите си по подразбиране емайла, който може да има някой, превишаване сайта си по този начин.
-
<?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" ; -
} -
?> - Изтеглете този код: 0305spamhostsource.txt
Използването Редовни изрази за валидиране на данни
Харесва ми да се провери на данни чрез preg_match (или някоя от функциите регулярен израз). Този метод убива много птици с един камък. Защо пиша отделни функции, за да проверите дали низ е празен, то друга, ако тя позволява номера, и друга, ако тя позволява алфа герои, а друг да специфична област дължина, а друг ... ти вземем точка.
ако (! preg_match ("/^[ A-z0-9] ($ 5,15 }$/", име)) $ грешка .= "<li class=\"errors\"> В полето Име може да съдържа само букви и цифри (без интервалите) и може да бъде до 15 знака. </ да> ";
В preg_match съм се проверява дали името поле съдържа само буквено-цифрови стойности (случай нечувствителен) и трябва да бъде най-малко 5 до 15 знака. Ако не отговарят, че спецификацията подходящ текст се добавя към $ грешка.
Използвайки "[променлива] [точка] [равнява] [текст]" по този начин позволява да се поддържа непрекъснат променлива ли, че добавянето За. Не мога след това проверете дали $ грешка съдържа всички данни, преди да ми скрипт няма съществена запитвания. Ако има грешки, можете да ги плюе от романтика $ грешка и поиска от потребителя да ги отстраним. Аз тогава да се използва CSS стила ми грешки, които можете да видите с клас = \ "грешки \".
Редовен изрази defiantly имат крива на обучение по тях, но те са една от най-добрите инструменти, които може да помогне да опростите живота си в различни ситуации. Аз ще отида в повече подробности за тях надолу по пътя, но за сега може да искате да си купите книга или някои Googling.
Нетехническо рекапитулация
-Прилагане на CAPTCHA скрипт.
Slashes-Escape (и други лоши герои).
-Проверете дали данните са следващите си форма използвайки правилния метод.
-Проверете дали искането е с произход от вашия собствен сървър.
-Проверка на данни чрез редовен изразяване.
Това е само върхът на айсберга за какво мога да ви кажа за спам. Thats защо сте решили да направите мини-серия от нея. През следващите няколко седмици ще бъде да ви донесат по-подробна начини да се справят с спам. Коментарът по-долу или имейл ми за собствения си спам превантивни методи. Ако става дума за нови или уникална техника, аз ще го публикуваме на сайта ни в бъдеще блог заедно с връзка обратно към вашия блог. Само напишете в коментарите по-долу и да включите вашия URL в сайта област.





































Просто ми хрумна ... създаването на тези твърдения, ако с умират () декларация може да бъде по-лесно за бърз и мръсен начин. Коя съм уверен, повечето от вас поне за сега искам просто да си хвърля quickfix инча Продължавай, че има ... нещо като това:
ако ($ _SERVER [ 'REQUEST_METHOD']! == "POST") (умре ( "Формата не може да се използва такова");)
Вие можете да поставите навсякъде, че в началото на скрипта, за да влезе в сила без да се притеснявате за съществуващия код твърде много.