Donne noms de domaine…

Gandi.net, le pourvoyeur de noms de domaine, vient de fêter ses dix ans. À cette occasion, ils distribuent sous forme de "bons" cinquante cinq mille noms de domaine gratuits à leurs clients. Étant moi même chez Gandi depuis 2002, j'ai eu droit à dix bons pour des noms de domaine gratuits.

Jeter en pâture les six ou sept bons que je n'utiliserai pas me semble contre-productif. J'ai donc décidé de donner un bon à chaque personne qui en fera la demande par commentaire, à concurrence du nombres de bons que je n'utiliserai pas moi-même, bien sûr.
Alors si vous voulez obtenir un bon pour un nom de domaine gratuit chez Gandi, faites votre demande et pensez à indiquer une adresse email valide.

Ces bons sont valables jusqu'au 31 mars 2010, dépêchez-vous !

Related posts

Wordle, l’hyper-résumé artistique

Wordle est un petit gadget fascinant. Vous lui donnez n'importe quel texte, et il crée un nuage de mots plus ou moins colorés et plus ou moins gros suivant leur fréquence dans le texte.
Comme j'aime les tests grandeur nature, j'ai extrait, nettoyé et formaté le texte des 7466 emails personnels que j'ai écrits entre septembre 2002 et début 2010. Puis j'ai donné le résultat à Wordle, qui se charge lui-même, si on le souhaite, de supprimer automatiquement les mots les plus courants et les moins significatifs (il, je, de, la, ...). Voici donc 7466 messages résumés en un peu plus de cent mots :

wordle-email-580

Les images créées par Wordle sont régies par la licence creative commons attribution 3.0.

Pour être complet, il faut bien sûr mentionner un script équivalent pour Indesign CS4, disponible chez indiscripts.com. Donc si vous avez la CS4, foncez essayer cette petite merveille. Si comme moi vous avez la CS3, passez votre chemin :(
Le très sympatique urbanbike.com en fait d'ailleurs une revue élogieuse.

Related posts

De la sécurité des applications web

Je suis retombé il y a peu de temps sur quelques messages échangés avec le développeur d'un jeu en ligne sur plateforme LAMP (Linux Apache MySQL PHP). C'était entre février et juin 2004, nous (#sden "canal historique") avions beaucoup trop de temps libre, et pas assez de choses intelligentes à faire. À l'époque, le concepteur du jeu ajoutait de nouvelles options et fonctions presque quotidiennement, signe que le code derrière ne devait pas être bien propre. Comme le jeu imposait une limite d'actions par unité de temps, et que tout ceci n'allait pas assez vite pour nous qui passions des journées entières rivés à l'écran, il a fallu prendre les choses en main.
On lui a tout fait, le pauvre. Tout, de l'empoisonnement de variables aux injections SQL. Avec à chaque fois un rapport de bug, bien sûr, nous ne voulions pas avoir le mauvais rôle.
Le plus dur a sans doute été de faire accepter à ce développeur d'applications compilées locales, qu'une application interprétée en ligne ne peut pas se programmer avec laxisme.
Le pire dans tout ça, c'est que le genre d'erreurs grossières de programmation commises par ce développeur est encore monnaie courante. La dernière faille de wordpress en est un parfait exemple.
Alors bien sûr, il existe maintenant des outils sophistiqués pour lutter contre certaines attaques. mod_security pour Apache permet par exemple de bloquer toute forme d'injection SQL, certains empoisonnements de variable et d'autres types d'attaques. Pour être efficace il réclame néanmoins un paramétrage complet calqué sur le fonctionnement de votre application.
Il serait tellement plus efficace de bien coder son application dès le départ !
Sans prétendre être exhaustif, voici quelques recommandations :

Configurez votre serveur web en mode "production", de sorte qu'il n'affiche pas sa version ni la version des modules chargés. Sur Apache, cela se passe dans le httpd.conf sous la forme ServerTokens Prod.
Ainsi, votre serveur est identifié sous le nom Apache au lieu de Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.7l DAV/2 PHP/5.2.8 SVN/1.4.4

Si c'est possible, configurez votre firewall pour qu'il ne laisse pas sortir l'utilisateur "apache" (en général www, ou httpd), sur d'autres ports que les ports 80 et 443. Sous PF (freebsd/openbsd) cela peut se faire comme ceci :

pass out quick proto tcp from any port 80 to any user 80 keep state
pass out quick proto tcp from any port 443 to any user 80 keep state
block out log proto { tcp, udp } user 80

Si vous ne pouvez pas faire ce blocage dans le firewall, faites au moins en sorte que votre interpréteur ne puisse pas ouvrir de sockets, ni accéder à n'importe quel fichier du serveur.

Configurez votre interpréteur (souvent PHP) pour ne pas retourner les erreurs. Au pire, créez un virtual host de développement pour vous-seul, qui affiche les erreurs, et assurez vous que les erreurs ne s'affichent pour personne d'autre. Utilisez log_errors = On dans votre php.ini pour enregistrer les erreurs dans un fichier désigné par error_log = /var/log/php_error.log.

Ne faites jamais confiance à l'utilisateur. Il arrivera toujours un moment où il va tripoter l'URL pour changer un paramètre, il peut aller jusqu'à modifier un formulaire pour injecter du code SQL dans une variable postée.
Ne faites pas confiance à javascript pour contrôler la validité des données. Contrôlez toujours côté serveur que les nombres sont des nombres, les chaînes de caractères sont bien ce qu'elles doivent être…
Si vous devez transmettre des données importantes via cookie/url/autre, n'hésitez pas à les chiffrer, ou à les accompagner d'un hash pour détecter une altération éventuelle.
Le referer (l'URL de provenance) est une donnée fournie par l'utilisateur. Ne bâtissez aucun système de sécurité à partir du referer.

Ne vous méprenez pas, il est possible d'attaquer un serveur (par injection SQL notamment) en aveugle. Même si aucune erreur n'est retournée par PHP, la page sans injection sera différente de la page avec injection, et cela suffit en général pour savoir si le code injecté est bien interprété. Il est donc vraiment vital de contrôler les données envoyées par l'utilisateur.
Par essais successif, il peut être possible de lire des informations dans la base de données. Par exemple, on peut créer une injection SQL qui va juste comparer le Nième caractère d'un champ de la table avec un caractère qu'on propose. Il suffit de faire en sorte que la requête SQL échoue si le caractère est juste et ne fasse rien si le caractère n'est pas le bon (ou inversement). Suivant la page html obtenue, même sans affichage d'erreur, on saura quel caractère est en quelle position dans le champs de la table.
Imaginons que mon champ contienne un mot de passe en clair de 10 caractères (c'est MAL). Cela fait un maximum de 10x255 caractères à tester, si on s'en tient à l'ASCII. Via injection SQL, j'aurai donc au maximum 2550 tests à faire pour trouver le mot de passe de 10 caractères. Si je décide non pas de tester le caractère, mais plutôt les bits qui constituent ce caractère, je n'ai plus que 8 tests à faire. En 80 tentatives au maximum, je trouve le mot de passe. Rapide, efficace, et surtout sensiblement plus discret.

Related posts

WolframAlpha™, le moteur de savoir

WolframAlphaLogo_Web Certains d'entre vous, qui touchez - ou avez touché - à la Science avec un grand S, connaissent certainement le logiciel Mathematica. Cette usine à traiter les formules mathématiques est devenue en 20 ans un véritable outils à tout faire, une institution presque incontournable. Mathematica est désormais livré avec des tonnes de données prêtes à être analysées : mathématiques, sciences et techniques, géographie, météorologie, finance et économie…
L'étape suivante - et presque évidente - était de rendre toutes ces données accessibles sans passer des semaines à apprendre les subtilités des algorithmes de Mathematica. C'est chose faite avec le nouveau né de Wolfram Research : WolframAlpha, le "moteur de savoir". Derrière cette appellation un peu pompeuse se cache une volonté de rendre les savoirs objectifs accessibles, et surtout de permettre aux utilisateurs d'établir des relations entre des éléments de connaissance. Ce n'est pas un moteur de recherche. Il ne renvoie rien d'autres que des données de sa base de connaissance interne, aux quelles il a fait subir les traitements mathématiques ou algorithmiques que l'utilisateur lui demande. Le tour de force réside dans le fait qu'il est possible de formuler ses requêtes en langage naturel (si tant est que l'anglais soit un langage naturel pour vous).
WolframAlpha est le premier calculateur de ma connaissance qui sache additionner les pommes et les oranges, c'est aussi, je pense, la seule application en ligne capable de comparer les villes de Londres et Tokyo, de me dire quand la Station Spatiale Internationale passera au dessus de Paris, de détailler la chimie de l'aspirine ou la structure d'un dodécaèdre… Si vous voulez avoir un aperçu du relief autour de Grenoble, ou la phase de la lune demain à Lyon, c'est possible aussi.

À vous de jouer !

Vous pouvez aussi intégrer WolframAlpha à votre navigateur (IE, Firefox), ou à votre système (Mac OS X, Windows).

Related posts

Quand WordPress se prend pour Word

Il y'a quelques temps, j'avais quitté Dotclear pour WordPress, car les petits frenchies n'étaient vraiment plus à la hauteur. Ce matin, j'ai failli quitter WordPress pour n'importe quoi d'autre.
Si il y a bien quelque chose que je déteste, ce sont les gens qui profitent de leur position pour imposer une idée débile à plein de monde. La dernière en date chez WordPress, c'est de remplacer à la volée tous les double quotes (ça -> ") par des guillemets typographiques (« et »).
D'une part, c'est profondément stupide, à la limite de la malveillance. En effet, nous sommes nombreux par ici à donner des exemples de code (programme, shell…) dans les quels les guillemets typographiques n'ont strictement pas leur place. D'autre part, comble de la négligence coupable, c'est mal fait ! La substitution à la volée se fait avec l'ajout d'un espace insécable après chaque guillemet, transformant un "toto" en « toto» .
Comment peut-on être aussi con ? Comment peut-on décider unilatéralement que les millions d'utilisateurs de WordPress aiment qu'on modifie leur blog sans les prévenir ? Si je voulais utiliser un logiciel qui prend des décisions à ma place, je taperais mes pages web dans Word.
Heureusement (ou pas), le problème s'est déjà posé avec WordPress, et certains ont trouvé des parades élégantes. Ainsi Peter Cooper a dévoilé une solution toute simple, que je m'empresse de reproduire ici :

Il suffit d'éditer le fichier functions.php dans le répertoire de votre thème WordPress (normalement wp-content/themes/[nom de votre thème]/functions.php). Vous y ajouterez à la fin les lignes suivantes :

<?php remove_filter('the_content', 'wptexturize'); ?>
<?php remove_filter('comment_text', 'wptexturize'); ?>

La première ligne désactive les substitutions stupides de texte à la volée dans le contenu de vos articles. La seconde ligne fait de même pour les commentaires.

Related posts

Les URL sont-elles mortes ?

Les gens comme moi, qui utilisent internet depuis dix ans ou plus, savent en général assez bien se débrouiller avec une URL. Quoi ? il y aurait des gens qui ne savent pas utiliser une URL ? Oui, plein.
Il y a en effet une partie assez importante de la population des utilisateurs quotidiens d'internet qui est incapable d'exploiter réellement une URL. Pour ces gens, les enchaînements de http, de slash, de points, de www ou de pas www sont tout simplement incompréhensibles, trop complexes. Ma génération, comme celle qui la précède, pensait que les jeunes naissant dans un monde connecté, avec un chauffe biberon USB pour nourrice, deviendraient des super-pro des réseaux. En réalité il faut bien se rendre à l'évidence : on en est loin, et on n'en prend même pas la direction.
La volonté de se simplifier la vie, et de masquer la complication aux utilisateurs est un aspect important du développement de nos sociétés. Autrefois, pour accéder à un site web, il fallait connaître son adresse. Maintenant, les moteurs de recherche vous évitent cette peine.
Il y a quelques temps, j'ai eu l'occasion de donner quelques cours de TICE en première année de licence (bac+1 donc). J'ai pu me livrer à quelques expériences qui parlent d'elles-même, jugez plutôt.
La première expérience est absolument navrante : dites à ces chères têtes blondes d'aller sur le site d'une grosse entreprise française comme par exemple TF1 (je ne les aime pas, mais l'exemple est probant). 100% des étudiants qui sont parvenus à ouvrir une fenêtre de navigateur tapent simplement "TF1" dans le moteur de recherche par défaut. Ensuite, dans la majorité des cas ils attrapent leur souris, et cliquent sur le premier lien dans les résultats de recherche. À aucun moment il ne leur viendra à l'esprit de saisir directement "tf1.fr" dans la barre d'adresse de leur navigateur. Comme si taper quelque chose dans ce champs était tabou, interdit, sale.
Alors pour les obliger un peu à s'approprier l'URL d'un document, j'ai fait un second test : j'ai envoyé à l'ensemble de mon groupe un email avec une URL suffisamment longue pour être sûr qu'elle soit coupée dans l'affichage de leur webmail. Je les ai ensuite mis au défi d'afficher le document. Le plus rapide a mis une bonne poignée de minutes à afficher pont_1.jpg. Bien qu'ayant déjà revu mes exigences à la baisse j'ai poursuivi l'exercice en leur demandant d'essayer de tirer quelque chose de l'URL fonctionnelle qu'ils avaient reconstituée. Il s'agissait de faire preuve d'un peu de curiosité et de remplacer "pont_1.jpg" par "pont_2.jpg". Insurmontable, sauf pour 2 ou 3 étudiants sur 24. C'est pathétique, mais c'est de cela qu'est fait notre monde.
Rien n'encourage les utilisateurs à s'intéresser aux adresses des documents qu'ils téléchargent. Notamment, les navigateurs s'ouvrent presque tous par défaut sur un moteur de recherche. Le Japon est intéressant à cet égard, car il est dans une position privilégiée pour accélérer la disparition des URL au profit des mots clés de recherche. Pour commencer, l'implémentation d'un système mondial de DNS au format international n'est pas encore pour demain, donc l'internaute japonais doit se frotter à des URL écrites en alphabet latin. Si http://www.monsite.com/ a un peu de sens pour nous, pour le nippon moyen c'est bien moins évident. Ensuite, les japonais sont très nombreux à surfer sur des équipements mobiles, en général leur téléphone portable.
www.patpro.net au format QR Si vous avez déjà tenté de taper une URL dans le navigateur d'un téléphone, vous savez à quel point c'est pénible. Il est évident, dans ce contexte, qu'un mot clé tapé dans sa langue maternelle, ou une image Datamatrix ou QR capturée via l'appareil photo de votre téléphone, remplacent avantageusement une URL interminable. Ainsi, au Japon, vous ne voyez plus d'URL sur les publicités, mais uniquement des propositions de mots clés à taper dans votre moteur de recherche par défaut, ou des images codées à scanner avec votre téléphone. Le mot clé est bien plus facile à mémoriser qu'une adresse de site web, et l'image codée peut être photographiée immédiatement par votre téléphone.
Cette évolution va forcément gagner le reste du monde, ne serait-ce qu'à cause des impératifs de la navigation sur téléphone. Pour les abonnés historiques d'AOL ce remplacement des URL par des mots clés a un petit goût de déjà-vu. Quant aux utilisateurs de navigateurs récents comme Safari 4, ils peuvent déjà mesurer la manière dont Apple met les URL en retrait par rapport au contenu, comme sur cette capture d'écran montrant le fonctionnement de la barre d'adresse de Safari/419.3 (2.x) en haut et de Safari/530.17 (4.0) en bas.

capture de la barre d'adresse de safari 2 et de safari 4

Related posts

Victime du Geek

Si vous me lisez, c'est soit que vous êtes ma maman (salut maman _o/) soit que vous êtes un peu geek. Et si vous êtes un peu geek, alors vous aimerez sans doute feuilleter Fashion Geektim, le blog geek-photo-manga-otaku de mes amis Mehdi et Marie. Vous ne pourrez pas le rater, c'est le blog qui a l'icône "rss" la plus grande du web.
Puis surtout, n'oubliez pas de leur glisser quelques commentaires de temps en temps pour leur dire d'arrêter de me piquer mes titres ou mes sujets de post !
Quoi qu'il en soit, souhaitons longue vie à ce nouveau blog, même si il semble déjà très bien parti.

Related posts

Flickr ou pas Flickr…

Depuis deux ans que je pratique la photo, on m'interroge souvent sur l'existence d'un compte Flickr à mon nom. Comme si, finalement, faire de la photo sans avoir "un Flickr" était impossible ou inconcevable. Quand je réponds par la négative, les gens qui ont de l'à-propos répliquent qu'il est pourtant très intéressant d'avoir un retour sur son travail.
Bien sûr, ils ont raison. À plus forte raison car le désir de plaire, au sens large, est profondément enraciné en moi. Me faire remarquer ou faire réagir les gens avec mes photos flatte nécessairement mon ego. Et pourtant, je ne payerai pas pour poster et partager ma production photographique (combien de p dans cette phrase ?).
La première raison qui me vient à l'esprit, c'est que j'aime tout maîtriser et ne pas être limité. Sur le site de Flickr, on ne maîtrise ni la présentation, ni les formats des images. On est aussi limité par un quota d'utilisation, et il faut payer pour passer en mode "pro" et pouvoir dépasser certaines de ces limitations. J'ai déjà mon propre serveur, sur lequel je n'ai pas vraiment de limite. Puis soyons cohérent, à quoi bon se payer l'achat et l'hébergement d'une machine, et payer pour mettre ses photos ailleurs ?
Il existe un autre frein, moins perceptible par l'utilisateur lambda, mais tout aussi réèl : la licence d'utilisation. Autant que je puisse dire, la licence de Flickr est correcte. On l'a déjà vu plusieurs fois par le passé, et on le reverra sans doute souvent : des sites communautaires et les sites de service s'amusent parfois à changer discrètement leur licence d'utilisation pour s'approprier tout ou partie du contenu posté par les utilisateurs.
La licence d'utilisation de Flickr, qui est en fait celle de l'ensemble des services Yahoo!, me pose quelques problèmes (article 8) :

Pour ce qui concerne le Contenu que vous stockez, transmettez ou mettez en ligne sur les Services en vue de le rendre accessible à des tiers, vous accordez à Yahoo! et aux sociétés du Groupe Yahoo!, pour le monde, un droit non-exclusif et gratuit d'utilisation permettant à Yahoo! et aux sociétés du Groupe Yahoo! de reproduire, publier et diffuser ce Contenu aux fins de fourniture du Service, de sa promotion et de sa distribution, et ce, sur tout support électromagnétique et par tout moyen de communication électronique, sur les sites du Groupe Yahoo! et sur les sites de partenaires ou de tiers. Ce droit est accordé pour la durée pendant laquelle vous déciderez d'inclure le Contenu sur le Service. Vous garantissez à Yahoo! avoir préalablement obtenu les droits nécessaires à cette exploitation et que le contenu est conforme à la loi et ne porte pas atteinte aux droits de tiers.

Cela soulève la question de la confiance. Finalement, ais-je envie de faire confiance à une entreprise étrangère, dont le but premier est la satisfaction de ses actionnaires, pour gérer au mieux mes intérêts ? La réponse est non.
Pour finir, j'ai un peu de mal avec la notion de communauté. Pour moi, toute communauté un peu formelle génère du communautarisme. En être ou ne pas en être, finalement, la question se résume à cela. D'aucuns diront qu'il est toujours agréable d'en être, l'union fait la force, et tout et tout. J'ai un doute. Si Flickr (ou Facebook, MySpace...) crée une communauté, c'est avant tout pour asseoir une position sur un marché. En réalité votre union fait sa force. Plus vous êtes nombreux à y adhérer, plus il devient incontournable.
Alors bien sûr, cela ne rime à rien d'être seul sur un réseau. Je partage mes photos ici-même et sur Café Salé, une communauté (et oui) relativement petite où la photographie n'est pas la discipline centrale. Je tente ainsi d'obtenir quelques retours sur mon travail. Mais il ne faut pas se faire d'illusion, peut être que Flickr a déjà gagné. Débuter dans la photographie en évitant soigneusement les sites incontournables s'apparente souvent à une traversée du désert. Le prix de la liberté, sans doute.

edit : ajout de l'extrait de licence

Related posts