Autoriser le téléchargement de fichiers avec une extension non répertoriée sous IIS7

Après quelques recherches, et suite à une demande d’un client ayant besoin de proposer en téléchargement des fichiers avec une extension .cgi_ ou .exe_ , j’ai trouvé qu’il ne suffisait pas de rajouter ces lignes dans le fichier web.config du site :

<system.webServer>
<handlers>
<add name="Client cgi" path="*.cgi_" verb="*" modules="StaticFileModule" resourceType="File" />
<handlers>
<system.webServer>

Il fallait aussi ajouter l’extension dans les types MIME (comme sous IIS6) via ce bloc toujours dans <system.webServer> :

<staticContent>
<mimeMap fileExtension=".cgi_" mimeType="application/octet-stream" />
</staticContent>

En espérant que cela fasse gagner du temps à certains d’entre vous 😉

Enregistrement du numéro de carte bancaire pour des paiements récurrents

J’ai longtemps cherché des informations fiables sur ce qu’on avait le droit de faire, et surtout de ne pas faire, concernant l’enregistrement d’un numéro de carte bancaire sur un site de ecommerce.

A priori, la référence à suivre est la norme PCI DSS, et j’ai trouvé ici un résumé des meilleures pratiques à suivre :

  • Traitez les transactions immédiatement sur le site ou externalisez cette tâche auprès de votre banque ou d’un PSP (Payment Service Provider).
  • Ne stockez pas les numéros de carte de crédit. Si ces numéros doivent être stockés, vous devez absolument suivre à la lettre les recommandations du PCI DSS en les chiffrant fortement (AES-256, RSA-2048…). Nous recommandons fortement de ne pas stocker les numéros sur les cartes de crédit. Le marchand est cependant autorisé à conserver un hash du numéro de carte (de préférence SHA-256), cela lui permet de pouvoir confronter a posteriori un numéro de carte. Le marchand peut également conserver les 6 premiers et les 4 derniers chiffres du numéro de carte.
  • Ne stockez jamais les cryptogrammes visuels CVV2. Ces codes constituent des champs de validation utilisés par les systèmes bancaires pour protéger vos paiements et contrôler la validité de la carte. [Ce sont en quelque sorte les mots de passe de la carte].Le stockage de ces données est strictement interdit par le PCI DSS. Le marchand stockant ces codes d’une façon volontaire ou non s’expose à de très fortes amendes.
  • Minimisez l’environnement de traitement des cartes. En d’autres mots, utilisez un seul serveur identifié pour toutes les opérations sur les cartes et sécurisez-le de façon drastique : patchs de sécurité, mots de passe complexes et surveillance.
  • Supprimez tous les accès d’administration externes. La majorité des cas de piratage de données bancaires a été réalisée via une interface d’administration laissée accessible depuis Internet (interface http ou ligne de commande ftp/ssh/…). Interdisez donc tous ces types d’accès depuis Internet : les administrateurs doivent être physiquement dans les locaux ou alors utilisez un jeton d’authentification non-rejouable de type RSA SecurId.

Et pour ceux qui, comme moi, utilisent le module « Paybox Direct Plus » pour mettre en place des paiements récurrents, pensez bien à utiliser le code d’activité ‘027’, qui indique un paiement récurrent et ne nécessite donc pas l’envoi du CVV2, qui ne doit surtout pas être conservé !

Image aléatoire définie dans un CSS

Pour donner l’impression qu’un site est dynamique, même s’il ne l’est pas vraiment, on utilise souvent des images aléatoires, qui changent à chaque visite du site. J’ai eu une demande pour mettre ça en place alors que l’image était définie à l’intérieur d’un style CSS, ce qui empêchait l’utilisation de javascript ou de code côté serveur.

Je suis alors tombé sur ce petit article : http://www.alistapart.com/articles/randomizer/
Et vous pouvez voir un exemple d’application sur un de nos sites : http://www.fredyonnet.com

J’espère que ça vous fera gagner du temps 😉

Composant NeatUpload en SSL

Vu que j’ai passé quelques heures à chercher une solution à ce pb, et si vous rencontrez le même souci que moi sur un site ASP.Net, voici le code que j’ai dû rajouter dans mon fichier « global.asax » pour faire fonctionner ce très pratique composant sur un site protégé par un certificat SSL auto-signé :

public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy
{
public TrustAllCertificatePolicy()
{ }

public bool CheckValidationResult(ServicePoint sp,
X509Certificate cert, WebRequest req, int problem)
{
return true;
}
}

void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();
}

Pensez à rajouter ça au début également :

<%@ Import Namespace= »System.Net » %>
<%@ Import Namespace= »System.Security.Cryptography.X509Certificates » %>

Comment limiter la récupération des images sur un site web ?

On ne m’avait plus demandé cela depuis très longtemps, mais comme j’ai eu la question hier …

Et je parle bien de « limiter » le fait de pouvoir récupérer une image sur un site, car c’est contradictoire avec le fonctionnement du web.

Ceci dit, voici donc ce que j’ai rajouté à la balise <body> du site en question :

<body oncontextmenu= »return false » ondragstart= »return false » >

En espérant que cela puisse vous dépanner 😉

Migration faite

Ca y est, ce blog tourne à présent sur un serveur Linux. Pour les technophiles, c’est un Xeon quadri-coeurs 64 bits sous Debian, et ça tourne pas mal du tout pour le moment.

J’ai profité du 11 novembre pour ne pas trop gêner nos clients, je suis trop gentil 🙂

Bon, je retourne découvrir l’univers de Fallout 3 de mon côté … j’adore écouter des chansons biens démodées dans un univers post-apocalyptique 😉