Cours Web dynamique théorie des SGBDR et langage SQL

Extrait du cours web dynamique SGBDR et langage SQL

…….
6.1 – quelle est la requête qui l’a engendré, est-elle valide ?
Le cas le plus simple est la page d’accueil. On y arrive quand on demande le site directement, éventuellement quand une erreur 404 (page not found) est produite, ou quand on clique sur un lien interne permettant d’y revenir.
Mettons nous de nouveau dans le cas d’un site marchand avec un panier virtuel. Pour arriver à la page valider_commande.php qui va passer la commande de ‘en cours’ (l’internaute est en train de remplir son panier) à un statut ‘attente paiement’ (l’internaute a passé commande et on attend confirmation du paiement) dans la base, et présenter au client internaute le récapitulatif de sa commande, les remerciements ad hoc, le lien pour imprimer un bon de commande à renvoyer avec le chèque et le lien pour paiement par CB, il faut nécessairement que le client ait cliqué sur « finaliser ma commande ». Un appel direct du script par l’URL échouera probablement, mais dès lors qu’il ne corrompt pas le SGBD (et en particulier, qu’il ne passe pas deux fois la commande !!!), ce qu’il affichera au client est peu important car il n’a pas à faire d’appel direct, c’est ou un bookmark mal placé, ou un refresh, ou une tentative d’intrusion/corruption de la base. Afficher un message d’erreur et un lien vers la page d’accueil sera donc amplement suffisant si on ne reçoit pas sur cette page valider_commande.php les arguments attendus.
6.2 – quels sont les arguments qui ont été reçus de la part du client ?
Sont-ils bien tous utiles ou sommes nous en train de trimballer des tonnes de variables pour le plaisir d’engorger le réseau ? De la même manière qu’une fonction possède un prototype avec un nombre d’arguments bien précis, un script attend certains arguments de manière obligatoire, d’autres sont facultatifs, et les derniers… inutiles donc on ne les transmet pas.
6.3 -quelles sont les données renvoyées par le script au client?
Elles doivent être classées dans les deux catégories suivantes : les données qui seront utiles à la suite de la navigation (par exemple : l’identifiant de session) et celles qui sont uniquement à but d’affichage.
Par exemple, une erreur de conception majeure d’un site marchand serait de faire un SELECT en SGBD à l’écran numéro 1 pour avoir le prix d’un article et de le faire transiter ensuite en HIDDEN pour l’utiliser plus tard pour le calcul de la facture sous prétexte que ça gagne une requête SQL. N’importe qui pourra modifier le prix de l’article ! Ne rigolez pas à la lecture, ce type d’erreur majeure dans l’analyse du flux des données a été constaté réellement. Si on doit en effet afficher le prix de l’article au client, on ne doit pas lui donner la possibilité de le choisir pour autant. Le prix utilisé pour le calcul doit
être conservé côté serveur exclusivement.
Cet exemple illustre un principe plus général concernant les données reçues de la part du client (navigateur) par les scripts. Souvenez vous : n’importe qui peut envoyer n’importe quoi. Par conséquent, on ne fait jamais confiance aux données qui arrivent car elles peuvent être erronées de bonne foi (erreur de saisie, par exemple saisir 1 0 [un-espace-zéro] au lieu de 10 [un-zéro], ceci fera probablement une erreur de syntaxe SQL si l’espace n’est pas supprimé) ou par trafficage volontaire (attaque). Notons à ce sujet qu’il y a presque autant d’attaques internes à l’entreprise qu’externes, être sur un intranet n’est en rien une garantie de sécurité. Un commercial va baisser les frais de port d’un de ses clients pour l’aider à passer commande et toucher sa prime, un conseiller boursier va baisser les frais de transaction d’un client à qui il a donné un mauvais tuyau ou à un de ses amis, etc… Et ensuite on va passer des heures à cherche un bug inexistant dans le code après des échanges de mails salés avec le département de comptabilité alors qu’il s’agit d’une erreur de conception.

…….

Si le lien ne fonctionne pas correctement, veuillez nous contacter (mentionner le lien dans votre message)
Cours Web dynamique théorie des SGBDR et langage SQL (444 KO) (Cours PDF)
SGBDR et langage SQL

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *