Overblog
Suivre ce blog Administration + Créer mon blog

Cryptographie en c#

28 Août 2010 , Rédigé par Hugues MEUNIER Publié dans #.NET

Pour ceux qui s'intéressent à la cryptographie, j'ai créé le projet esignpdf dans codeplex. eSignPdf permet de signer un document pdf ou de valider les signatures d'un document pdf.

Le code utilise les composants iTextSharp et BouncyCastle pour la partie crypto.

Le msi est utilisable tel que si vous devez signer numériquement un document pdf (nécessite un certificat).

Lire la suite

Tout savoir sur l'injection SQL et le cross site scripting avec des exemples

18 Août 2010 , Rédigé par Hugues MEUNIER

C'est ici dans l'excellentissime article de Bryian Tan .

A lire pour se rendre compte des méthodes de piratage des sites Web et imaginer les mesures de protection.

Lire la suite

Eviter les erreurs de certificats sur des appels https en .NET

18 Août 2010 , Rédigé par Hugues MEUNIER

Lorsque nous développons des applications qui font appel à des liens externes en https, nous n'avons pas en général les certificats cibles de production.

Il faut donc passer par des certificats auto signés ou des certificats gratuits (cacert). Il peut y avoir des problèmes car les certificats auto signés ne sont pas reconnus en dehors de la machine où ils ont été créés et une exception peut être générée s'il n'y a pas de correspondance entre le nom du certificat et le nom complet de l'url accédée...

 

Heureusement, il est possible de désactiver, en c#, les mécanismes de vérification au niveau du protocole SSL et des certificats.

 

Il suffit de dériver une classe de ICertificatePolicy :

 

public class MyPolicy: ICertificatePolicy

{

public bool

CheckValidationResult(
ServicePointsrvPoint, X509Certificatecertificate, WebRequestrequest, int certificateProblem)

{

      //Return True afin de forcer l'acceptation du certificat.

      return true;

}

}

 

et d'appeler cette policy par défaut :

 

System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();

 

Tous les appels System.Net (proxy client WS, WCF ou HttpWebRequest) utiliseront cette policy.

 

Il est important de préciser qu'il ne faut pas mettre en place cette astuce en production car elle entraîne la désactivation des mécanismes de sécurité Windows qui protègent contre certaines attaques (le phishing).

 
Lire la suite

Appeler un service Web externe via un proxy avec authentification

10 Août 2010 , Rédigé par Hugues MEUNIER Publié dans #.NET

L'appel de services Web externes à l'entreprise nécessite toujours de réaliser l'appel à travers un proxy. Ce proxy demande une authentification,de type Windows, s'il s'agit d'un Proxy ISA par exemple. S'il faut également passer un token, alors cela se complique quelque peu.

Ci-dessous, un exemple de code qui fonctionne bien dans tous les cas et qui permet de passer au proxy le token Windows du process en cours ce qui évite le stockage de données sensibles dans les fichiers de configuration :

// Création d'une instance WebProxy

 

IWebProxy proxy = new WebProxy(http://urlduproxy:portduproxy);

// Passe les credentials du cache au proxy

proxy.Credentials = System.Net.

CredentialCache

.DefaultCredentials;

 

// prépare la requête

 

HttpWebRequest

myRequest =

(

HttpWebRequest)WebRequest.Create(http://urlduservice

);

 

//affecte le proxy

myRequest.Proxy = proxy;

Et voilà !

Lire la suite