J'ai utilisé pour obtenir autant de spam dans ma boîte à lettres de tous les jours que je dépensais plus de temps l'effaçant alors j'ajoutais le nouveau contenu, maintenant des sites, ou commençant de nouveaux sites combinés (la droite d'histoire typique). Certains de votre spam de site internet n'est pas évitable, ou, c'est évitable, mais au coût de et/ou d'utilisabilité bon obtenir d'information pris dans le “bad chose” aussi.
Sans aucun doute, si vous’re sérieux du développement de toile vous’re va créer et réagir réciproquement avec les formes régulièrement. Surtout avec cette nouvelle toile 2,0 attitude chaque a…gee wiz, ce que’s cela ?
CAPTCHA
CAPTCHA est les premiers la plupart des gens de méthode utilisent pour empêcher le spam aujourd'hui. Le quel est ?
“A CAPTCHA est un test de réponse de défi utilisé sur les ordinateurs pour vérifier si l'utilisateur est humain. Un type commun de CAPTCHA qu'est utilisé sur les sites internet exige que le visiteur tape les lettres et les nombres d'une image déformée. Cette méthode est fondée sur le fait qui est difficile pour les ordinateurs extraire le texte de l'image pendant que c'est très facile pour les humains. ” - le captchacreator com
Ici’s quelques ressources aux manuscrits si vous’ll peut appliquer ce caractère fonctionnel dans vos propres formes :
Echapper des Données - Empêche SQL Injections
Capcha est usless si vous’re partant votre forme sans défense de l'assaut. Rappeler se filtrer les ficelles de poste avec addslashes () ou mysql_real_escape_string().
Aussi prendre un regarder ces fonctions pour l'autre type similaire de contrôles qui pourraient être utiles :
- Htmlspecialchars () - Echappe les caractères suivants : &,’,”,>,< ...that is the ampersand, single quote, double quote, less than, and greater than symbols.
- Strip_tags() - Décape tout HTML et PHP code de la ficelle donnée.
- Htmlentities () - Convertit TOUS caractères à leur équivalent d'entités de HTML (ceci est un prend plus toute version de htmlspecialchars).
- Urlencode () - Code l'URL pour passer des ficelles un OBTIENT la méthode. Comme j'ai mentionné, don’t usage OBTIENT avec les formes. Ceci est utile quand vous’re passant l'utilisateur variables d'entrée pour les autres raisons.
Se rappeler, une fois vous convertissez des données comme cette utilisation d'une des fonctions de ci-dessus, vous pouvez le défaire pour la lisibilité et la production en utilisant sa fonction inverse. Urlencode () par exemple a urldecode () défaire ses actions si vous pouvez commencer à utiliser la ficelle comme vous auriez avant que le code.
Vérifier la Méthode de Demande
Lancer un si la déclaration autour de votre processeur de forme existant qui vérifie voir si les données viennent de la variable de poste globale. Si non, alors l'utilisateur n'accède pas à votre forme la façon vous avez conçu l'être utilisé.
<? phpsi ( $_le SERVEUR [ ‘REQUEST_METHOD’ ] == ‘POST’ ) {//la forme typique traite} d'autre {résonner » La forme ne peut pas être utilisée comme ça » ;}- ?
> - Télécharger ce code :
Changer ceci pour OBTENIR si vous’re utilisant que plutôt. Cependant, je vous recommanderais haut n'utilise jamais cette méthode comme c'est plus fragile.
Vérifier la Source de Demande
Vous devez vérifier aussi pour voir si la demande provient de votre propre serveur. Ceci est une méthode très commune d'abus de forme qui doesn’t nécessairement moyens vous’ll reçoit le spam. Si vous’re serveur obtient beaucoup d'e-mails rebondis à son e-mail implicite vous pouvez avoir quelqu'un abusant de votre site dans cette manière.
<? php$source = $_le SERVEUR [ ‘HTTP_HOST’ ] ;//Ou si vous voulez détecter juste le domaine vous pouvez utiliser une expression régulière pour le filtrer.$la source = ereg_replace ( »^(www.)?([^.] ).[^.] $” , » \\2" , $_Le SERVEUR [ ‘HTTP_HOST’ ] ) ;si ( $la source ! = = » le robmalon.com ») {résonner » vous illégalement accédez à ce manuscrit » ;} d'autre {//la forme typique traite}//Le referrer doit être aussi de votre propre domaine…Likewise, s'il n'y a pas de référence alors l'utilisateur évidemment isnt utilisant votre forme correctement (si nous avons mis devons le contrôle pour cela).//Note: stristr () les recherches pour le premier événement d'une ficelle dans une autre ficelle.si ( de getenv de ( de stristr de ( »HTTP_REFERER ») , $la source ) ) {//la forme typique traite} d'autre {résonner » vous illégalement accédez à ce manuscrit » ;}- ?
> - Télécharger ce code :
L'utilisation Expressions Régulières Pour la Validation de Données
J'aime vérifier des données utilisant preg_match (ou n'importe quel des fonctions d'expression régulières). Cette méthode tue beaucoup d'oiseaux avec une pierre. Pourquoi écrire des fonctions à séparées pour vérifier si une ficelle est vide, alors un autre s'il permet des nombres, et un autre s'il permet caractères à l'alpha, et un autre à la longueur de champ spécifique, et un autre…you comprend.
si (! preg_match_match ({5.15}$/”, $le nom)) $l'erreur =. “<li classe = \”errors\”>Le champ de Nom peut contenir seulement des lettres et des nombres (aucuns espaces) et peut être seulement jusqu'à 15 caractères longs.</li>”;
Dans le preg_match je vérifie que le champ de nom contient seulement des valeurs alphanumériques (reconnaît insensible) et les besoins d'être au moins 5 à 15 caractères dans la longueur. Si vous mettez’t rencontre cette spécification approprie le texte est ajouté à $l'erreur.
L'utilisation “[variable] [dot][equals] [text]” dans cette mode me permet de garder une variable continue qui je’m addition à. Je peux vérifier alors pour voir si $l'erreur contient n'importe quelles données avant que mon manuscrit fait n'importe quelles questions significatives. S'il y a des erreurs vous pouvez les cracher en résonnant $l'erreur et demande à l'utilisateur pour les corriger. J'utilise alors CSS pour concevoir mes erreurs que vous pouvez voir avec la classe = \”errors\”.
Les expressions régulières ont provocamment une courbe d'érudition sur eux mais ils sont un des meilleurs outils qui peuvent aider simplifient votre vie dans un assortiment de situations. Je’ll entre dans plus de détail d'eux en bas la route mais pour le moment vous pouvez vouloir acheter un livre ou faites du Googling.
La Récapitulation Non-Technique
-Appliquer un manuscrit de CAPTCHA.
-L'évasion taillade (et les autres mauvais caractères).
-Le contrôle pour voir si les données viennent à votre forme utilisant la méthode correcte.
-Le contrôle pour voir si la demande provient de votre propre serveur.
-Les données de contrôle utilisant une expression régulière.
Ceci est juste la pointe de l'iceberg pour ce que je peux vous dire du spam. Cela pourquoi je’ve a décidé de faire une mini-collection de lui. Sur les semaines prochaines de couple j'amènerai vous a détaillé plus des façons je traite le spam. Commenter au dessous de ou m'envoyer un e-mail à de votre propre spam vos méthodes préventives. Si c'est une nouvel ou unique technique je le posterai dans un blog futur avec un dos de lien à votre blog. Juste écrire dans les commentaires au dessous de et inclure votre URL dans le champ de site internet.






































Il m'est arrivé juste…setting augmente ces si les déclarations avec un meurt () la déclaration pourrait être plus facile pour une méthode rapide et sale. Lequel je’m sûr la plupart d'entre vous pour le moment voudriez au moins qu'un quickfix juste pour ait lancé dans. Garder qu'à l'esprit…Something comme ceci :
si ($_SERVER[ « REQUEST_METHOD »] ! = = LA « POSTE ») { meurt (”The forme ne peut pas être utilisée comme ça”); }
Vous pouvez mettre que n'importe où au début d'un manuscrit pour lui entrer en vigueur sans se soucie du code existant trop.