DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / HFSQL
  • Présentation
  • Définir un fichier de données inaltérable
  • Opérations disponibles ou non sur un fichier de données inaltérable
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Fichiers de données inaltérables
HFSQL ClassicHFSQL Client/ServeurDisponible uniquement avec ces types de connexion
Présentation
Cette fonctionnalité permet de signifier qu'un fichier de données ne pourra pas être modifié après écriture. Une fois un enregistrement ajouté, cet enregistrement ne peut être ni modifié, ni supprimé.
Ce type de fichier de données est utile dans des domaines d'activité qui demandent une forte traçabilité. HFSQL signe automatiquement chaque enregistrement, et signe le fichier de données lui-même.
L'inaltérabilité des fichiers :
  • protège d'erreurs de programmation en interdisant la modification ou la suppression (via les fonctions HModifie/HSupprime ou via une requête).
  • ajoute sur chaque enregistrement, un hash du contenu de l'enregistrement. Ce hash est un HMAC(SHA256) dont la clé est dérivée du mot de passe de cryptage du fichier.
Remarque : Pour renforcer la sécurité, il est conseillé de mettre un mot de passe sur le fichier de données inaltérable. Dans ce cas, le fichier ne pourra pas être créé sans connaître son mot de passe. Il sera donc impossible de supprimer et de recréer le fichier de données sans connaître ce mot de passe.
Définir un fichier de données inaltérable
Il est possible de définir un fichier de données HFSQL inaltérable :
  • doit directement dans l'éditeur d'analyses :
    1. Affichez la fenêtre de description du fichier de données (par exemple, option "Description du fichier de données" du menu contextuel.
    2. Dans l'onglet "Options", cochez l'option "Fichier inaltérable (active automatiquement la sécurité renforcée)".
      Fichier inaltérable
    3. Validez la description du fichier de données. Dans l'éditeur d'analyses, le fichier de données inaltérable est représenté avec un verrou.
      Verrou
  • soit par programmation, en définissant dynamiquement un fichier de données :
    1. Créez une variable de type Description de fichier.
    2. Utilisez la propriété Inaltérable pour définir l'inaltérabilité du fichier de données.
    3. Utilisez la fonction HDécritFichier pour créer la description du fichier de données.
Remarques :
  • Si le fichier de données est défini inaltérable avec un mot de passe, la sécurité renforcée est automatiquement mise en place.
    Rappel : l'option "Activer la sécurité renforcée" permet de crypter les données sans stocker la clé de cryptage dans le fichier de données. Avec cette option et sans le mot de passe du fichier de données, il est impossible de récupérer le contenu du fichier de données.
  • Si l'option "Fichier inaltérable" est mise en place sur un fichier de données existant, une mise à jour automatique des fichiers de données sera effectuée. Le fichier de données existant sera compacté (suppression des enregistrements rayés et supprimés) lors de cette mise à jour.
    Attention : A partir du moment où un fichier de données est inaltérable, plus aucune modification automatique des données ne pourra être effectuée sur ce fichier.
  • Cette option est disponible uniquement à partir de la version 23. Pour des fichiers de données HFSQL Client/Serveur, il est nécessaire d'utiliser un moteur HFSQL C/S en version 23 (ou supérieure).
Opérations disponibles ou non sur un fichier de données inaltérable
Les seules opérations possibles sur un fichier de données inaltérable sont la création et l'ajout d'enregistrements.
Les fonctions et fonctionnalités autorisées sont les suivantes :
  • Fonctions HCréation et HCréationSiInexistant.
  • Fonction HAjoute (hors transaction).
  • Fonction HEcrit avec un numéro d'enregistrement uniquement si le numéro d'enregistrement est le suivant du dernier enregistrement (dans ce cas-là, un ajout est donc effectué).
  • Fonction HModifie avec un numéro d'enregistrement uniquement si le numéro d'enregistrement est le suivant du dernier enregistrement (dans ce cas-là, un ajout est donc effectué).
  • Fonction HEnregistre précédée de la fonction HRAZ (dans ce cas-là, un ajout est donc effectué).
  • Requêtes de type INSERT.
Les fonctions et fonctionnalités interdites sont les suivantes :
  • Fonctions HModifie, HRaye, HEcrit, HEnregistre, HSupprime, HSupprimeTout.
    En effet, ces fonctions modifient le contenu des fichiers de données.
  • Requêtes de type UPDATE et de type DELETE.
    En effet, ces requêtes modifient le contenu des fichiers de données.
  • Toute modification du contenu du fichier (quel que soit le moyen utilisé).
  • La réindexation avec compactage ou avec suppression des enregistrements endommagés.
    En effet, ce type de réindexation supprime tous les enregistrements non actifs ou endommagés. Le fichier de données peut donc être modifié.
  • L'ajout dans une transaction.
    En effet, l'annulation de la transaction entraîne la modification du fichier de données.
  • La modification automatique des fichiers de données.
    En effet, la modification de la structure d'un fichier de données (ajout ou suppression d'une rubrique par exemple) peut modifier les données présentes dans le fichier de données.
    Par exemple, l'ajout d'une rubrique avec une valeur par défaut va modifier tous les enregistrements en leur ajoutant cette nouvelle rubrique. De même, la suppression d'une rubrique existante supprime des informations dans les données enregistrées. L'intégrité des données n'est plus garantie.
    Remarque : Cette modification automatique était autorisée dans la version finale. Elle n'est plus autorisée à partir de la mise à jour Update 1.
Si une de ces fonctions ou fonctionnalités est utilisée, une erreur d'exécution est affichée.
Remarque : La fonction HVérifieInaltéré permet de vérifier qu'un ou tous les enregistrements d'un fichier de données inaltérable n'ont pas été modifiés (par exemple avec un éditeur hexadécimal). Attention : Un enregistrement altéré peut être lu (si l'en-tête n'est pas altéré).
Comment gérer une modification automatique des données ?
La modification automatique des fichiers de données n'est pas autorisée. Lorsqu'une nouvelle version d'une application contient une évolution de la structure des enregistrements d'un fichier de données HFSQL inaltérable, cette version de l'application devra :
  • gérer l'archivage du fichier de données dans son ancien format,
  • créer un nouveau fichier de données avec la nouvelle structure.
Rappel : Une application peut consulter les données d'un fichier de données HFSQL d'une ancienne structure en utilisant la fonction HVérifieStructure en mode hCompatible. Si le changement de la structure rend incompatible le fichier, il sera possible d'utiliser le fichier archivé dans son ancien format avec la nouvelle application après l'appel de la fonction HDéclareExterne.
Version minimum requise
  • Version 23
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 13/06/2023

Signaler une erreur ou faire une suggestion | Aide en ligne locale