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). Θα χρησιμοποιηθούν για τόσα πολλά spam στο γραμματοκιβώτιό μου ότι ήμουν καθημερινές δαπάνες περισσότερο χρόνο για τη διαγραφή Στη συνέχεια είχα την προσθήκη νέου περιεχομένου, τη διατήρηση χώρων, ή για την εκκίνηση νέων χώρων σε συνδυασμό (τυπική ιστορία δεξιά). 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. Ορισμένα από spam ιστοσελίδα σας δεν είναι να προλαμβάνονται, ή, που μπορεί να προληφθεί, αλλά σε βάρος της χρηστικότητας και / ή η καλή πληροφόρηση να εμπλακεί στα "κακά πράγματα", όπως καλά.

No doubt, if you’re serious about web development you’re going to be creating and interacting with forms on a regular basis. Δεν υπάρχει αμφιβολία, εάν είστε σοβαροί για την ανάπτυξη web είστε πρόκειται να δημιουργηθεί και να αλληλεπιδρά με μορφές σε τακτική βάση. 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 είναι το νούμερο ένα μέθοδο οι περισσότεροι άνθρωποι χρησιμοποιούν σήμερα για την αποφυγή spam. 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 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() . Θυμηθείτε να φίλτρο μετά strings με 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 () για να επουλώσουν τις ενέργειές της ώστε να μπορείτε να ξεκινήσετε τη χρήση του ως string θα είχατε πριν από την κωδικοποίηση.

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. Πρόκειται για μια πολύ συνηθισμένη μέθοδος μορφή κακοποίησης που δεν σημαίνει κατ 'ανάγκη θα πρέπει να λαμβάνουν 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. Αν είστε server γίνεται όλο και πολλά μηνύματα αναπήδησε στην προεπιλεγμένη email σας μπορεί να έχει κάποιος κάνει κατάχρηση του δικτυακού σας τόπου με αυτό τον τρόπο.

  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. Γιατί να γράψω διαφορετικά καθήκοντα για να ελέγξουμε αν ένα string είναι άδειο, τότε μια άλλη περίπτωση που επιτρέπει αριθμούς, και άλλο αν επιτρέπει άλφα χαρακτήρες, και ένα άλλο σε συγκεκριμένα το μήκος του πεδίου, και ένα άλλο ... παίρνετε το σημείο.

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 }$/", όνομα $)) $ σφάλμα .= "<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 είμαι έλεγχο ότι το όνομα τομέα που περιέχει μόνο αλφαριθμητικούς αξίες (case-insensitive) και πρέπει να είναι τουλάχιστον 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. Χρησιμοποιώντας "[μεταβλητή] [dot] [ισούται] [κείμενο]" με αυτόν τον τρόπο που μου επιτρέπει να διατηρεί μια συνεχή μεταβλητή που είμαι με την προσθήκη. 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 να στυλ μου σφάλματα τα οποία μπορείτε να δείτε με class = \ "σφάλματα \".

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. Θα μπω σε περισσότερες λεπτομέρειες για τους στον δρόμο, αλλά για τώρα είναι να θέλει να αγοράσει ένα βιβλίο ή να κάνετε κάποια Googling.

The Non-Technical Recap Η μη τεχνική πάλι
-Implement a CAPTCHA script. -Εφαρμογή ενός CAPTCHA script.
-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. Αυτή είναι μόνο η κορυφή του παγόβουνου για όσα μπορώ να σας πω σχετικά με το 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. Κατά τις επόμενες εβδομάδες θα σας φέρνουν πιο λεπτομερείς τρόπους Ασχολούμαι με το spam. Comment below or email me about your own spam preventative methods. Σχόλιο κάτω ή στο email μου για τη δική σας spam μεθόδων πρόληψης. If it is a new or unique technique I will post it in a future blog along with a link back to your blog. Εάν πρόκειται για νέα ή μοναδική τεχνική που θα μου post σε ένα blog μέλλον μαζί με μια σύνδεση πίσω στο 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 Τρόποι για να πιάσει και την πρόληψη φόρμα Spam - Μέρος 1"
  1. MyAvatars 0,2 Rob - Mar 5, 2008 Rob - 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 μόνο στοίχημα in. να το έχουμε κατά νου ... Κάτι σαν αυτό:

    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 Feed

7 Added To 1 = 7 που προστίθεται στο 1 =

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