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). Jeg plejede at få så meget spam i min postkasse hverdag, at jeg brugte mere tid på at slette det da jeg var tilføje nyt indhold, vedligeholde websteder, eller starte nye websteder kombineres (typisk historie højre). 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. Nogle af dit websted spam er ikke forebygges, eller er det forebygges, men på bekostning af anvendelighed og / eller god information bliver fanget i den "dårlige ting" så godt.

No doubt, if you’re serious about web development you’re going to be creating and interacting with forms on a regular basis. Ingen tvivl om, hvis du mener det alvorligt med web-udvikling du skal skabe og interagere med former på regelmæssig basis. Especially with this new web 2.0 attitude every has…gee wiz, what’s that? Især med dette nye web 2.0 holdning hver har ... ih! Wiz, hvad er det?

CAPTCHA CAPTCHA
CAPTCHA is the number one method most people are using to prevent spam today. CAPTCHA er antallet en metode, de fleste mennesker bruger til at forhindre spam i dag. What is it? Hvad er det?

“A CAPTCHA is a challenge response test used on computers to check if the user is human. "En CAPTCHA er en udfordring svar testen anvendes på computere for at kontrollere, om brugeren er menneskelige. A common kind of CAPTCHA that is used on websites requires that the visitor type the letters and numbers of a distorted image. En almindelig form for CAPTCHA, der bruges på hjemmesider kræver, at den besøgende skrive bogstaver og tal i et forvrænget billede. 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 Denne metode er baseret på det faktum, at det er vanskeligt for computere at trække teksten ud af billedet, mens det er meget let for mennesker. "- Captchacreator.com

Here’sa few resources to scripts so you’ll be able to implement that functionality into your own forms: Her er nogle ressourcer til scripts, så vil du være i stand til at gennemføre denne funktionalitet til dit eget former:

Escape Data - Prevent SQL Injections Escape data - at undgå SQL-injektioner
Capcha is usless if you’re leaving your form unprotected from attack. Capcha er usless hvis du forlader din form ubeskyttet mod angreb. Remember to filter post strings with addslashes() or mysql_real_escape_string() . Husk at filtrere efter strenge med addslashes () eller mysql_real_escape_string ().

Also take a look at these functions for other similar kind of checks that might be useful: Også tage et kig på disse funktioner for andre lignende form for kontrol, som kan være nyttige:

  • htmlspecialchars() - Escapes the following characters: &,’,”,>,< ...that is the ampersand, single quote, double quote, less than, and greater than symbols. htmlspecialchars () - udflyder følgende tegn: &,',",>,< ... det er det tegn, enkelt anførselstegn, dobbelt anførselstegn, mindre end og større end symboler.
  • strip_tags() - Strips out all HTML and PHP code from the given string. strip_tags () - Strips alle HTML og PHP-koden fra den givne streng.
  • htmlentities() - Converts ALL characters to their HTML entities equivalent (this is a more catch all version of htmlspecialchars). htmlentities () - Konverterer alle tegn til deres HTML-entiteter tilsvarende (dette er en mere fange al-versionen af htmlspecialchars).
  • urlencode() - Encodes the URL to pass strings on a GET method. urlencode () - Koder webadressen til at videregive strenge på en GET-metoden. As I mentioned, don’t use GET with forms. Som jeg nævnte, må du ikke bruge GET med former. This is useful when you’re passing user input variables for other reasons. Dette er nyttigt, når du passerer bruger inputvariable af andre grunde.

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. Husk, når du konvertere data, som denne ved hjælp af en af ovennævnte funktioner, kan du fortryde det til læsbarheden og output ved at bruge sin reverse funktion. Urlencode () for eksempel har urldecode () til at fortryde sine handlinger, så du kan begynde at bruge strengen som De ville have, før de koder.

Check Request Method Check anmodning metode
Throw an if statement around your existing form processor that checks to see if data is coming from the globals post variable. Kast en hvis erklæring omkring din nuværende form processor, der kontrollerer, om data kommer fra den globals post variable. If not, then the user is not accessing your form the way you designed it to be used. Hvis ikke, så brugeren ikke adgang til din form den måde, du designet den til at blive brugt.

  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. Ændre dette til GET hvis du bruger det i stedet. However, I would high recommend you never use that method as it is more insecure. Jeg vil dog høj anbefaler, at du aldrig bruge denne metode, da det er mere usikre.

Check Request Source Check anmodning kilde
You should also check to see if the request is originating from your own server. Du bør også kontrollere, om anmodningen er stammer fra din egen server. This is a very common method of form abuse which doesn’t necessarily mean you’ll be receiving spam. Dette er en meget almindelig metode i form misbrug, som ikke nødvendigvis betyder, vil du modtage 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. Hvis du server er at få en masse afviste e-mails til sin standard-e-mail, du måtte have nogen misbruger dit websted på denne måde.

  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 Ved hjælp af regulære udtryk for data validering
I like to check data using preg_match (or any of the regular expression functions). Jeg kan godt lide at kontrollere data via preg_match (eller nogen af de regulære udtryk funktioner). This method kills a lot of birds with one stone. Denne metode dræber en masse fluer med ét smæk. 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. Hvorfor skrive adskilte funktioner for at kontrollere, om en streng er tom, og derefter en anden, hvis den tillader numre, og en anden, hvis den gør det muligt alpha tegn, og en anden til specifikke område længde, og en anden ... du får det punkt.

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 }$/", $ navn)) $ error .= "<li class=\"errors\"> I feltet Navn kan kun indeholde bogstaver og tal (ingen mellemrum) og kan kun op til 15 tegn. </ 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. I preg_match jeg kontrollere, at navnet området kun indeholder alfanumeriske værdier (små bogstaver) og skal være mindst 5 til 15 tegn i længden. If you don’t meet that specification appropriate text is added to $error. Hvis du ikke opfylder denne specifikation er relevant tekst er føjet til $ fejl.

Using “[variable] [dot][equals] [text]” in this fashion allows me to keep an ongoing variable that I’m adding to. Brug "[variable] [dot] [lig] [tekst]" på denne måde tillader mig at holde en løbende variabel, som jeg tilføjer til. I can then check to see if $error contains any data before my script does any significant queries. Jeg kan derefter kontrollere, om $ fejl indeholder alle data, før min scriptet ikke nogen væsentlig forespørgsler. If there are errors you can spit them out by echoing $error and ask the user to correct them. Hvis der er fejl du kan spytte dem ud med at gentage $ fejl og beder brugeren om at rette dem. I then use CSS to style my errors which you can see with class=\”errors\”. Jeg derefter bruge CSS til at style min fejl, som du kan se med class = \ "fejl \".

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ære udtryk defiantly har en indlæringskurve på dem, men de er en af de bedste værktøjer, der kan bidrage til at forenkle dit liv i en række forskellige situationer. 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. Jeg vil gå mere i detaljer om dem nede ad vejen, men for nu kan du vil købe en bog eller gøre nogle google.

The Non-Technical Recap Den ikke-teknisk resumé
-Implement a CAPTCHA script. -Gennemføre en CAPTCHA script.
-Escape slashes (and other bad characters). -Escape skråstreg (og andre dårlige karakterer).
-Check to see if data is coming to your form using the correct method. -Kontroller at se, om data kommer til din form ved hjælp af den korrekte metode.
-Check to see if the request is originating from your own server. -Kontroller at se, om anmodningen er stammer fra din egen server.
-Check data using a regular expression. -Check data ved hjælp af et regulært udtryk.

This is just the tip of the iceberg for what I can tell you about spam. Dette er blot toppen af isbjerget for, hvad jeg kan fortælle dig om spam. Thats why I’ve decided to make a mini series of it. Thats hvorfor jeg har besluttet at gøre en mini-udgaven af det. Over the next couple weeks I will be bringing you more detailed ways I deal with spam. I løbet af de næste par uger, jeg vil bringe dig mere detaljeret, hvordan jeg håndtere spam. Comment below or email me about your own spam preventative methods. Kommentar nedenfor eller email mig om dine egne spam forebyggende metoder. If it is a new or unique technique I will post it in a future blog along with a link back to your blog. Hvis det er en ny eller enestående teknik jeg vil sende det i en fremtidig blog sammen med et link tilbage til din blog. Just write in the comments below and include your URL in the website field. Bare skriv i kommentarerne nedenfor og omfatter din webadresse på hjemmesiden område.


1 Comment(s) On 1 Kommentar (er),

"5 Ways To Catch And Prevent Website Form Spam - Part 1" "5 måder at fange og forebygge Website Form Spam - Del 1"
  1. MyAvatars 0.2 Rob - Mar 5, 2008 Rob - 5 marts 2008

    It just occured to me…setting up those if statements with a die() statement might be easier for a quick and dirty method. It just faldt mig ... at oprette dem, hvis udsagn med en dør () kan være lettere for en hurtig og beskidt metode. 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: Som jeg er sikker på, at de fleste af jer i hvert fald for nu ønsker en quickfix til lige smide i. Hold det i tankerne ... noget som dette:

    if ($_SERVER[‘REQUEST_METHOD’] !== ‘POST’) { die(”The form can not be used like that”); } if ($ _SERVER [ 'REQUEST_METHOD']! == 'POST') (die ( "Skemaet kan ikke bruges gerne, at");)

    You can put that anywhere at the beginning of a script for it to take effect without worrying about existing code too much. Du kan lægge, at et hvilket som helst sted i begyndelsen af et script for, at den kan træde i kraft uden at bekymre sig om eksisterende kode for meget.



Leave A Comment: Efterlad en kommentar:

Comments RSS Feed Kommentarer RSS-feed

7 - 3 = 3 =

Custom Theme by Rob Malon | Content & Design © 2008 - Rob Malon [dot] Com. Custom Theme af Rob Malon | Content & Design © 2008 - Rob Malon [dot] Com. "));
"));