Un site consacré a Delphi et Linux
    logo
  Delphi
  TER
  Linux
  Liens
  L'auteur
TER







Hit-Parade


TER > Présentation des technologies utilisés


A.         Choix d’un langage pour dynamiser notre site web

1.             Le langage que nous recherchions

Afin de réaliser notre application la plus générique possible nous avons déterminé que le langage à utiliser devait posséder les qualités suivantes :

·         Etre approprié à Internet (être exécutable à partir d’un serveur afin de générer du code Html/Wml lisible par tous les navigateurs).

·         Etre portable (le même code doit être utilisable sur plusieurs plate-forme sans nécessairement être modifié).

·         Avoir un code le plus lisible possible (facilitant ainsi sa compréhension par des personnes tiers).

·         Avoir un code au maximum réutilisable (ce que permet de faire une programmation à objets).

·         Etre compatible avec le maximum de serveur et le maximum de moteur de base de données.

Très rapidement nous nous sommes aperçus que principalement quatre langages étaient appropriés à Internet : les CGI (common gateway interface) et trois langages de scripts Perl , Asp (active server pages) et Php (personal home pages).

2.             Notre choix

Une étude rapide de ses 4 langages nous a permis de nous rendre compte que seul les langages de scripts PHP et ASP pouvaient satisfaire nos exigences.

En effet les CGI sont des composants exécutables (exe, dll) s’exécutant sur un serveur. Ils permettent d’écrire dans des fichiers d’accéder à des bases de données ou de générer du code HTML à envoyer au navigateur. Mais contrairement aux langages de scripts ils sont compilés ainsi leurs sources ne sont pas lisibles, et ils sont spécifiques à la plate forme pour laquelle ils ont été compilé. Ces 2 propriétés limiteraient la portabilité et la réutilisation de notre application et pour cela nous avons orienté notre choix vers un langage de script.

Le langage Perl est un langage de script très semblable à Php et ASP cependant il propose moins de fonctionnalités et le code des scripts qu’il permet d’écrire est beaucoup moins lisible que ceux de ses deux langages. Ainsi nous ne l’avons pas retenu.

Le choix entre PHP (Personal home page) et ASP ( Active server pages (technologie Microsoft mais cependant gratuite)) nous a posé plus de difficultés en raison de leur forte similitude. Néanmoins nous avons préféré PHP à ASP car PHP propose un éventail de fonctions nettement supérieur (plus de 500 fonctions). Ainsi la longueur des codes est diminuée et la lisibilité des scripts est augmentée. Et contrairement à ASP il implémente la programmation orientée objet, gère en standard le File Upload, implémente les expressions régulières.

De plus, PHP ne fonctionne pas seulement avec les serveurs PWS et IIS mais également apache... PHP gère également en accès natifs outre ODBC de nombreux SGBD: Oracle, Sybase, Informix, mySQL, Adabas, Empress, FilePro, InterBase, mSQL, PostgreSQL, Solid, SQLServer, Unix Dbm.

3.             Description de php

Il s’agit d’un langage de script par conséquent c’est un langage interprété. Cette propriété rend son exécution plus lente qu’un langage compilé mais lui permet d’être extrêmement portatif. Il est pourvu d’une quantité considérable de fonctions, contenu dans des librairies.

Il offre ainsi la possibilité, de traiter les réponses d’un utilisateur fourni dans un formulaire, de générer des fichiers PDF ou des images GIF, et propriété très importante de gérer les résultats de calculs ou requêtes SQL dynamiquement.

Sa syntaxe est proche de celle du langage C (boucles « for » « while » opérateurs booléens « && »« || » …). Il offre également des possibilités de programmation objet.

Deux remarques importante :

o        Son code peut être directement inclut dans du code HTML.

o        Il est exécuté côté serveur ainsi le client n’a pas accès a son code (contrairement au javasript).

B.         Choix d’un serveur et d’un moteur de base de données

1.             Choix d’un serveur HTTP

Concernant le serveur http nos critères de choix étaient la gratuité du serveur et sa compatibilité avec Php et SSL ( mécanisme de sécurisation des payements électronique ). Pour cela nous avons choisi le serveur apache.

Remarque : le serveur apache est la référence en matière de serveur http (selon une étude de la société Netcraft il est utilisé par 58.75% des sites Web). De plus son nom vient du fait qu’il est constitué d’un noyau auquel on peut ajouter des modules (patches). Ainsi nous allons pouvoir lui ajouter un module SSL et un module PHP.

Résultats du sondage de la société Netcraft :

Serveurs

Nombre de sites (janv-2001)

Pourcentage

Apache

16207982

58.75

Microsoft-IIS

5901507

21.39

Netscape-Enterprise

1733097

6.28

WebLogic

1004571

3.64

Zeux

693684

2.51

Rapidsite

371441

1.35

Thttpd

343172

1.24

Tigershark

150937

0.55

AOLserver

127980

0.46

WebSitePro

113480

0.41

 

2.             Choix du moteur de base de données

PHP supporte de nombreux SGBD: Oracle, Sybase, Informix, mySQL, Adabas, Empress, FilePro, InterBase, mSQL, PostgreSQL, Solid, SQLServer, Unix Dbm.

Or comme nous voulions un SGBD gratuit notre choix se limitait aux SGBD : mSQL, PostgreSQL, mySQL. Notre choix s’est arrêté sur mySQL pour les raisons suivantes :

MySQL est interfaçable avec de nombreux langages comme C, C++, Perl, PHP ou Python.

MySQL sauvegarde chaque table de la base dans un fichier spécifique du répertoire de la base. La taille maximale d'une table peut se situer entre un minimum de 4 Go et les limites du système d'exploitation.

MySQL est environ trois à quatre fois plus rapide que de nombreuses base de données commerciales. MySQL est aussi très facile à gérer grâce à l'utilitaire mysqladmin.

MySQL est une base de données Open Source et GPL. Il est distribué librement sur les systèmes UNIX et OS/2. Par contre, sous Windows, il vous faut souscrire une licence.

Néammoins MySQL n’est pas sans défaut ainsi on peut regretter que :

MySQL ne supporte pas les requêtes imbriquées (la version 3.24 devrait en être pourvu).

MySQL ne supporte pas les transactions : une transaction est une unité logique de travail qui contient une ou plusieurs blocs SQL executés par un utilisateur. Une transaction se termine lorsqu'elle est explicitement arrétée par l'utilisateur. En SQL classique, une transaction commence par un COMMIT et se termine par un ROLLBACK.

MySQL ne dispose pas de la notion de clefs étrangères : dans une base de données relationnelles, les identifiants (clefs primaires) d'une table se retrouvent en clefs étrangères d'une autre table en relation avec la première. Ce système de clefs primaires et clefs secondaires permet d'assurer l'intégrité des données

MySQL ne dispose pas de la notion de vues : une vue est une présentation des données contenues dans une ou plusieurs tables (ou d'autres vues). Une vue prend le résultat d'une requête et le traite comme si c'était une table. C'est pourquoi une vue peut aussi porter le nom de "Requête sauvée" ou "Table virtuelle".

C.         Cryptage des informations

1.             Mise en évidence du problème

Les clients adhérant à notre coopérative de location de cassettes doivent lors de leur inscription indiquer leur numéro de carte de crédit ainsi que sa date d’expiration afin de pouvoir verser un capital à la coopérative qui est débitée a chacun de leurs emprunts.

Il apparaît alors un certain nombre de problèmes de sécurité (liés aux modalités de payement) que l’on retrouve de manière récurrente dès que l’on souhaite réaliser du commerce électronique, voici une liste non exhaustive de ses risques :

Risque

Besoin

Fraude de la part du commerçant (modification du montant à débiter).

Intégrité des données

Fraude de la part d’un tiers (interception et utilisation des informations de la carte de crédit).

Confidentialité

Fraude de la part du client (il utilise une carte de crédit qui n’est pas à lui).

Fraude de la part du commerçant (il vend du vent sous une fausse identité).

Authentification

Fraude de la part du client (il conteste, à tort, une commande qu’il a passée).

Non répudiation

Fraude de la part du client (il a un découvert)

Assurance de paiement au commerçant

 

2.             Solutions existantes

a)      La transmission en clair

Rien n’est codé et il n’y a aucun mécanisme de sécurisation. Dans ce cas toutes les fraudes sont possibles.

b)      La sécurisation de type SSL (Secure Socket Layers)

Ce protocole créé par Netscape est le plus utilisé aujourd’hui. Ceci provient sûrement du fait de sa simplicité d’utilisation (transparent pour l’utilisateur) et qu’il est intégré dans tous les navigateurs du marché (IE , Netscape …).

On peut s’apercevoir que l’on est dans une communication sécurisé (SSL) de la manière suivante (pour IE5):dans la barre d’adresse, ‘http’ est remplacé par ‘https’:  et dans la barre d’état, un cadenas apparaît:

Les échanges sur le réseau sont codés par un algorithme RSA à clefs. Mais cela ne garantie en rien une éventuelle fraude de la part du commerçant ou un éventuel refus de paiement de la part du client.

c)      Le protocole SET (Secure Electronic Transaction)

Ce protocole a été mise en service en 1996 par Visa et Mastercard (sociétés de carte de crédit).

C’est maintenant un standard international de sécurisation avec codage de l’information : cryptage des références de la carte de crédit, certification digitale des acteurs et signature digitale des messages.

Cependant SET tarde à se développer vraiment car il est empêtré dans des problèmes de lourdeur de déploiement et d’interopérabilité insuffisante des différentes offres logiciels (Tandem/Compaq, IBM, Verifone/HP, Money/Microsoft).

d)      Le protocole C-SET

Le protocole C-SET (Chip Secure Electronic Transaction) est une extension du protocole SET.

Ce protocole a été développé par les banques françaises en mettant à profit leur longue expérience d’un lecteur de carte connecté au Minitel.

C-SET nécessite un dispositif matériel PINpad (lecteur de carte) dont de plus en plus de téléphone Wap sont équipés.

Ce procédé permet d’augmenter la sécurité de SET:

Authentification de la carte (vérification matériel).

Authentification du détenteur de la carte (basée sur la vérification du code PIN par le microprocesseur de la carte).

§         Authentification du marchand.

§         Intégrité de la transaction.

§         Confidentialité des données sensibles.

Avec C-SET le paiement est garanti au vendeur, et aucun enregistrement préalable n’est exigé, que se soit pour le détenteur de la carte ou pour le commerçant.

e)      En résumé

 

En clair

SSL

SET

C-SeT

Intégrité des données

L

L

J

J J

Authentification

L

L

J

J J

Non répudiation

L

L

J

J J

Assurance de paiement pour le commerçant

L

L

J

J J

Confidentialité

L

J L

J

J J

Simplicité d’utilisation

J J

J J

J

J

Simplicité de mise en œuvre

J J

J J

L

J

Performances

J J

J J

L L

J

 

3.             Pour notre application

Pour notre application nous nous contenterons du protocole SSL. En effet compte tenu du fait que notre application n’est qu’une simulation il ne nous est pas apparu indispensable d’utiliser un dispositif aussi lourd que SET ou C-SET.

D.         Accessibilité des pages persos

Les adhérents à notre coopérative ont la possibilité de déposer et ainsi de rendre accessible des pages persos sur notre site (articles sur : des acteurs, des films, des techniques d’effets spéciaux, des photos de tournages de films).

Or comme le sujet de leur pages est totalement libre et qu’une même page peut concerner plusieurs sujets. il nous a semblé non envisageable de concevoir un annuaire thématique de ses pages.

Par conséquent nous avons décidé à la manière d’un moteur de recherche d’indexer ses pages.

Pour cela nous avons utilisé le moteur d’indexation Swish-e. Ce programme permet de générer un fichier d’index sur le contenu des documents d’un répertoire. Une fois ce fichier créé on peut soumettre au programme des requêtes et il nous renvoie la liste des documents correspondant aux mots recherchés.

E.          Langages de mise en page

1.             Pour notre site Web

Les langages permettant de mettre en page un site web sont au nombre de trois le Xml, le Html et le Xhtml. Il s’agit de trois langages de description et de formatage de document fonctionnant à l’aide de balises.

Xml est le plus ancien des trois mais il n’est pas reconnu par tous les navigateurs (browser). De plus il ne permet que très difficilement d’afficher des images et aucune balise n’est défini en standard (elles sont toutes à définir).

Le Html est le langage le plus utilisé. Il est beaucoup plus souple que Xml ainsi il autorise de ne pas fermer certaines balises, le nom des balises peut être écrit en minuscules ou en majuscules. De plus contrairement au Xml il permet très facilement d’afficher des images, tous les navigateurs le reconnaissent, et toutes les balises utilées sont définies en standard (il n’est pas possible d’en définir de nouvelles mais par l’intermédiaire de feuilles de style on peut les modifier).

Le Xhtml est une extension du HTML qui, en outre, reprend les caractéristiques les plus intéressantes du XML : rigueur pour la fermeture des balises, possibilité de définir de nouvelles balises...

Pour notre application compte tenu de sa souplesse nous utiliserons le Html.

2.             Javascript

JavaScript est comme son nom l'indique un langage de script. Mais contrairement au langage PHP il est interprété du côté client. Cette propriété permet une exécution très rapide mais il y a un revers de la médaille : son code est visible et très facilement modifiable par le client, ce qui n'ait pas sans poser des problèmes de sécurité.

Sa syntaxe est semblable a celles des langages C,C++ et Java, son code s'intègre directement dans les pages html, il est orienté objet. Son principale atout est qu'il permet de résoudre des problèmes que HTML  ne sait pas résoudre, ainsi il sait gérer les évènements principaux de la souris ( déplacements, clicks , etc..) et permet d'afficher des fenêtres modales et d'effectuer des temporisations.

Pour notre application nous allons utiliser Javascript essentiellement pour vérifier la validité des informations saisies par les utilisateurs dans les formulaires. Ainsi pour chacun de nos formulaires les utilisateurs verrons apparaître des boîtes d'avertissements leur signalant leurs erreurs de saisies.

3.             Les cookies

Un cookie est une chaîne de caractères enregistrée dans un fichier texte sur votre disque dur, à un endroit précis qui lui est réservé. Le fichier est créé par le site web visité via le navigateur. La durée de vie du cookie est déterminée dès sa création via une date d'expiration. Les cookies permettent aux webmasters, après étude, de calculer la fréquence des visites, le temps passé sur une page, le chemin suivi lors de la visite du site.

Remarque : La légende du cookie espion est en partie dépassée et exagérée. Il faut savoir qu'il y a plus de risque d'accepter le Javascript, les applets Java ou les ActiveX que les cookies. Malgré cela comme pour ces différentes solutions l'utilisation des cookies est dépendante de la configuration du navigateur, ce qui peut être un handicap.

Pour notre application nous allons utiliser les cookies afin que les utilisateurs n'aient pas à ressaisir leur mot de passe a chaque visite du site web. Ainsi après une première identification réussie a chaque fois qu'ils reviendrons sur notre site leurs paramètres personnels seront automatiquement activés.

4.             Pour notre site Wap

Pour notre site Wap nous n’avons pas eu l’embarras du choix car il n’existe qu’un langage de mise en page qui est le WML (il est basé sur le XML). Son code est aussi stricte que le Xml (sensible à la case, balise fermante obligatoire, attributs à ne pas oublier) néanmoins il est moins puissant. Le WML possède son propre langage de script le WMLScript, et permet l’affichage d’images.

Le WML n’est pas visible par un navigateur courant (Internet explorer ou netscape navigator) et comme nous ne disposions pas de téléphone wap nous avons utilisé un émulateur.



Patrice Eon © Copyright 2000 Tous droits réservés - optimisé en 1024X728 - 65000 couleurs