Le blog de jp.fox...

Aller au contenu | Aller au menu | Aller à la recherche

dimanche 22 juin 2008

Protection de formulaire contre le spam

Parfois, on cherche des solutions très compliquées pour résoudre certains problèmes.

J'ai mis en place, il y a quelques temps, un système pour protéger un formulaire contre le spam. N'ayant pas accès au code traitant le formulaire, mais uniquement au formulaire lui même, j'ai dû trouver une astuce autre que l'utilisation de captcha. C'est habituellement ce que je mets en oeuvre pour lutter contre ce fléau.

Si on réfléchit un peu à la méthode employée par les bots spammeur, on imagine que ceux ci scrutent le code html de la page à la recherche d'un formulaire, récupèrent le nom des champs et l'adresse de validation du formulaire afin de générer automatiquement une commande POST sur cette dernière.

Une idée est de ne pas fournir une adresse de validation du formulaire correcte afin de tromper le bot. C'est cette idée que j'ai mise en oeuvre.

On place une adresse de validation bidon dans le tag <FORM> et on la corrige par javascript juste avant la soumission du formulaire.

Voici un exemple de code :

<script type="text/javascript">
<!--
function correcturl()
{
  var formobj = document.getElementById("formid");
  if(formobj)
    formobj.action="/vrai/adresse/de/validation/du/formulaire.php";
  return true;
}
//-->
</script>
 
<form action="http://www.adresse.bidon.com/pour/tromper/le/bot/" 
  method="post" id="formid" onsubmit="return correcturl();">
Nom : <input name="nom" />
</br/>
Prénom : <input name="prenom" />
</br/>
<textarea name="commentaire" cols="35" rows="7"></textarea>
</br/>
<input type="submit" />
</form>

Certes, l'utilisation de cette méthode sur un site à fort trafique poussera les spammeurs à développer un bot spécifique au site, mais pour le site d'une petite entreprise ou d'un particulier, cela fonctionne très bien.

jeudi 19 juin 2008

Zend Studio Toolbar avec Firefox 3

Si vous utilisez la barre d'extension ZendStudio dans Firefox 2 et que vous souhaitez passer à Firefox 3, Zend propose en téléchargement une nouvelle version de son plugin (la version 2.1) compatible avec ce navigateur.

Zend Studio Toolbar

Ayant cherché assez longuement une solution en tournant en rond sur le site Zend, voici une solution rapide :

Rendez vous dans la zone de téléchargement du site Zend, choisissez Studio Browser Toolbars puis Firefox Toolbar.

Si ça peut servir à d'autres ;-)

lundi 2 juin 2008

Rédaction d'un livre sur la certification Zend

Editions ENI Vous êtes expert PHP.

Les Editions ENI recherchent un auteur pour l'écriture d'un livre préparant à la certification ZEND.

Votre expérience, votre expertise apporteraient à ce livre un plus indéniable, et avec un livre édité, votre CV s'enrichit et votre expertise est reconnue.

Si l'aventure vous tente, contactez Isabelle Caprais à l'adresse auteurs arobase eni.fr, l'équipe éditoriale vous accompagnera tout au long du processus.

mercredi 23 janvier 2008

Stocker du texte UTF-8 correctement dans une base MySQL

De nombreux projets PHP (moteur de blog, CMS...) gèrent les données au format UTF-8. Malheureusement, beaucoup ne le font pas correctement : les tables MySQL sont créées avec l'encodage latin1 par défaut et le texte encodé en UTF-8 par l'application y est stocké tel quel.

Lorsque l'on regarde le contenu de ces tables avec phpmyadmin, on voit alors les lettres accentuées remplacées par deux caractères sans rapport. Il devient difficile d'exploiter efficacement ces données.

L'erreur généralement commise est double :

  • table créée en latin1 pour stocker de l'utf-8
  • utilisation des fonctions mysql_* en latin1 avec des données utf8

Lire la suite...

vendredi 9 novembre 2007

Sortie de PHP 5.2.5

PHPCette version se contente, et c'est déjà bien, de corriger une soixantaine de bogues dont 7 en rapport avec la sécurité. Autrement dit, il est vivement recommandé de passer à cette version si vous êtes déjà en version 5.2.x.

Pour ceux qui utilisent encore une version antérieure, un petit coup d'oeil aux guides de migration peut être très utile.

N'oubliez pas : PHP 4 n'évoluera plus après le 31/12/2007 et les correctifs de sécurité ne seront plus publiés après le 08/08/2008. Il est grand temps de passer à PHP 5

mercredi 24 octobre 2007

Un petit captcha en php

Je ne trouvais pas mon bonheur sur le net (je n'ai peut être pas assez cherché) alors j'ai écrit un petit filtre antispam pour les formulaires en PHP. Il est facile à mettre en oeuvre et ne nécessite pas l'installation de police TrueType sur le serveur.

?

Vous pouvez faire un test ici

Pour ceux qui sont intéressés, voici le code source ainsi qu'un petit exemple l'utilisant.

Lire la suite...

mardi 9 octobre 2007

Mise à jour de Zend Core sous Linux

Zend Logo (Propriété de Zend) Suite à la sortie de Zend Core 2.5, il est possible de mettre à jour facilement un serveur Zend Core 2.0 sous Linux à l'aide de la commande suivante (sous login root ou avec sudo) afin de bénéficier, au moins, de PHP 5.2.4 :

# /usr/local/Zend/Core/setup/update -g -a

Si, comme moi, vous avez ajouté quelques extensions à Zend Core, comme PDO_SQLITE, une désinstallation/réinstallation peut être nécessaire :

# /usr/local/Zend/Core/bin/pecl uninstall PDO_SQLITE
# /usr/local/Zend/Core/bin/pecl uninstall PDO
# /usr/local/Zend/Core/bin/pecl install PDO
# /usr/local/Zend/Core/bin/pecl install PDO_SQLITE

Ensuite un petit redémarrage d'Apache est nécessaire :

# /usr/local/Zend/apache2/bin/apachectl restart

Et vous voilà avec un serveur sous PHP 5.2.4 :-)

Remarque : il est aussi possible de passer par l'interface web si vous y avez accès : http://votreserveur/ZendCore/ > Control Center > Updates

dimanche 19 août 2007

Gestion des sessions avec Code Igniter

Logo Code Igniter déposé par EllisLab Je développe actuellement une application Web avec Code Igniter, un framework PHP léger. Afin d'accéder à la partie backoffice (administration) de l'application, j'utilise un accès par code utilisateur/mot de passe puis un système de sessions. Code Igniter propose un mécanisme simple pour gérer les sessions. Mais en regardant de plus près son fonctionnement, malgré une option permettant de stocker les sessions dans une base de données, on se rend compte que les informations sont systématiquement transférées sous forme de cookies sur le navigateur de l'utilisateur %-)

Il s'agit d'un gros problème de sécurité. Les sessions natives PHP stockent les données sur le serveur et non pas sur le client, ceci permet la gestion d'informations sensibles de manière beaucoup plus sécurisée.

Si vous avez déjà une application utilisant Code Igniter et ses sessions, je vous recommande vivement d'utiliser la bibliothèque d'Oscar Bajner, OB Session, qui corrige cette faille tout en gardant les API, bien documentés, de Code Igniter.

- page 1 de 2