Maison  >  Article  >  interface Web  >  Comment puis-je signer des PDF en toute sécurité à l'aide de JavaScript et de l'API WebCrypto ?

Comment puis-je signer des PDF en toute sécurité à l'aide de JavaScript et de l'API WebCrypto ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-26 04:39:13406parcourir

How Can I Securely Sign PDFs Using JavaScript and WebCrypto API?

Signer un PDF avec JavaScript et l'API WebCrypto

Signer numériquement un document PDF à l'aide de JavaScript et de l'API WebCrypto est une fonctionnalité recherchée, surtout avec la prise en charge améliorée de WebCrypto dans Chrome et Firefox. Cependant, les informations disponibles sur ce sujet sont limitées.

L'API WebCrypto a actuellement des limites pour accéder aux magasins de clés et aux appareils de chiffrement locaux. De plus, l'envoi de l'intégralité du fichier PDF au navigateur ou au serveur API de signature soulève des problèmes de sécurité.

Une bonne pratique consiste à créer un hachage du PDF, à envoyer ce hachage au navigateur et à utiliser JavaScript pour appeler une application. sur le système local via une extension de navigateur. Cette application locale peut alors accéder au magasin de clés et produire la signature. Le hachage signé peut être renvoyé au serveur, où il peut être réinjecté dans le PDF.

Une solution pour faciliter ce processus est Signer.Digital, une extension de navigateur qui donne accès au magasin de clés local et permet JavaScript pour signer le hachage. Le hachage signé est ensuite renvoyé au serveur, où il peut être ajouté au PDF.

Mécanisme de travail

  1. Calculez le hachage du fichier PDF .
  2. Transmettez le hachage à l'extension de navigateur Signer.Digital via JavaScript.
  3. L'extension invoque l'application hôte, qui signe le hachage à l'aide du magasin de clés local.
  4. Le hachage signé (signature PKCS7) est renvoyé à JavaScript.
  5. JavaScript renvoie le hachage signé au serveur.
  6. Le serveur injecte la signature dans le fichier PDF.

Code Exemple

// Sign the hash using the browser extension
SignerDigital.signPdfHash(hash, $("#CertThumbPrint").val(), "SHA-256")
  .then(
    function (signDataResp) {
      // Success: Send signed data to the server
    },
    function (errmsg) {
      // Failure: Handle error
    }
  );

En intégrant Signer.Digital, les développeurs peuvent signer numériquement des documents PDF de manière sécurisée et efficace, même avec les limitations de l'API WebCrypto.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn