À l'ère de lois telles que le Règlement général sur la protection des données ou le RGPD, la protection des informations des utilisateurs est devenue plus importante que jamais. Lorsqu'une capture est effectuée, elle est mise en cache pendant une courte période sur nos serveurs pour permettre son téléchargement. Bien que nos serveurs soient sécurisés et que nous n'inspectons pas les captures d'un utilisateur sans autorisation. Cette protection ne suffit pas dans certains scénarios lors du traitement des informations personnelles.
La première amélioration potentielle est de ne plus mettre en cache les captures en modifiant la longueur du cache à zéro minute, sur votre compte Page. Notez cependant que cela signifie que la capture ne sera pas disponible au téléchargement pendant très longtemps et devra donc être téléchargée immédiatement après sa création.
Un autre problème de sécurité possible concerne le processus même de transmission des données sensibles. Afin de sécuriser ces données, vous devez d'abord activer le SSL, puis une fois que nous recevrons les données et qu'elles seront traitées, ce qui se produit assez rapidement, elles seront automatiquement supprimées de notre système pour garantir qu'il n'y ait pas de faille de sécurité.
Plus de sécurité peut également être ajoutée aux captures PDF ou DOCX en mot de passe protégeant les documents. Cela garantit que seuls les utilisateurs disposant du mot de passe correct peuvent accéder à un fichier protégé.
Cependant, si vous capturez des informations très sensibles telles que des dossiers hospitaliers, etc. et que vous souhaitez un niveau de protection supplémentaire, vous pouvez crypter vous-même les captures résultantes. Pour ce faire vous précisez une clé de chiffrement à chaque requête, ces clés ne sont pas stockées par GrabzIt. Cette clé sera utilisée pour crypter la capture protégeant les informations. Comme nous ne stockons pas la clé, nous ne pouvons pas vous aider à récupérer les captures cryptées. Une fois que vous recevez la capture, utilisez la clé que vous avez générée précédemment pour la déchiffrer.
Dans l'exemple ci-dessous, une clé cryptographiquement sécurisée est créée et envoyée à GrabzIt, elle est ensuite utilisée pour crypter la capture. Cette même clé de chiffrement est ensuite utilisée pour décrypter le résultat.
GrabzItClient grabzIt = new GrabzItClient("Sign in to view your Application Key", "Sign in to view your Application Secret"); grabzIt.UseSSL(true); string encryptionKey = grabzIt.CreateEncryptionKey(); ImageOptions options = new ImageOptions(); options.EncryptionKey = encryptionKey; grabzIt.URLToImage("http://www.spacex.com", options); GrabzItFile encryptedCapture = grabzIt.SaveTo(); GrabzItFile decryptedCapture = grabzIt.Decrypt(encryptedCapture, encryptionKey);
Dans l'exemple ci-dessous, une clé cryptographiquement sécurisée est créée et envoyée à GrabzIt, elle est ensuite utilisée pour crypter la capture. Cette même clé de chiffrement est ensuite utilisée pour décrypter le résultat.
Afin d'utiliser des captures cryptées avec Java 6, 7 et 8, veuillez installer les fichiers de politique de juridiction à force illimitée Java Cryptography Extension (JCE). into tous les dossiers /jre/lib/security/ des dossiers d'installation Java.
GrabzItClient grabzIt = new GrabzItClient("Sign in to view your Application Key", "Sign in to view your Application Secret"); grabzIt.UseSSL(true); String encryptionKey = grabzIt.CreateEncryptionKey(); ImageOptions options = new ImageOptions(); options.setEncryptionKey(encryptionKey); grabzIt.URLToImage("http://www.spacex.com", options); GrabzItFile encryptedCapture = grabzIt.SaveTo(); GrabzItFile decryptedCapture = grabzIt.Decrypt(encryptedCapture, encryptionKey);
Dans l'exemple ci-dessous, une clé cryptographiquement sécurisée est automatiquement créée et envoyée à GrabzIt, elle est ensuite utilisée pour crypter la capture. Cette même clé de chiffrement est ensuite utilisée pour décrypter automatiquement le résultat en passant true à la méthode DataURI, qui peut ensuite être lue dans la méthode de rappel.
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/@grabzit/js@3.5.2/grabzit.min.js"></script>
</head>
<body>
<img id="capture"></img>
function callback(dataUri)
{
document.getElementById('capture').src = dataUri;
}
<script type="text/javascript">
GrabzIt("Sign in to view your Application Key").UseSSL().Encrypt().ConvertURL("http://www.spacex.com").DataURI(callback, true);
</script>
</body>
</html>
Dans l'exemple ci-dessous, une clé cryptographiquement sécurisée est créée et envoyée à GrabzIt, elle est ensuite utilisée pour crypter la capture. Cette même clé de chiffrement est ensuite utilisée pour décrypter le résultat.
var grabzit = require('grabzit'); var client = new grabzit("Sign in to view your Application Key", "Sign in to view your Application Secret"); client.use_ssl(true); var encryptionKey = client.create_encryption_key(); client.url_to_image("http://www.spacex.com", {"encryptionKey":encryptionKey}); client.save_to(null, function (error, result){ if (error != null){ throw error; } var decryptedBytes = client.decrypt(result, encryptionKey); });
Malheureusement, Perl ne peut pas déchiffrer le cryptage AES de manière native et nécessite des exécutables externes ou une compilation C. Par conséquent, nous n'avons pas ajouté cette fonctionnalité à notre API Perl. Vous pouvez plutôt ajouter cette fonctionnalité vous-même en utilisant le guide ci-dessous.
$grabzIt = GrabzItClient->new("Sign in to view your Application Key", "Sign in to view your Application Secret"); $grabzIt->UseSSL(1); $options = GrabzItImageOptions->new(); $options->encryptionKey("UUK2Xo9OLT2dFvN0wPBGOMZRYqD6WxqFtrZK9YrG+Hg="); $grabzIt->URLToImage("http://www.spacex.com", $options); //needs to be decrypted $data = $grabzIt->SaveTo();
Dans l'exemple ci-dessous, une clé cryptographiquement sécurisée est créée et envoyée à GrabzIt, elle est ensuite utilisée pour crypter la capture. Cette même clé de chiffrement est ensuite utilisée pour décrypter le résultat.
$grabzIt = new \GrabzIt\GrabzItClient("Sign in to view your Application Key", "Sign in to view your Application Secret"); $grabzIt->UseSSL(true); $encryptionKey = $grabzIt->CreateEncryptionKey(); $options = new \GrabzIt\GrabzItImageOptions(); $options->setEncryptionKey($encryptionKey); $grabzIt->URLToImage("http://www.spacex.com", $options); $encryptedData = $grabzIt->SaveTo(); $decryptedData = $grabzIt->Decrypt($encryptedData, $encryptionKey);
Dans l'exemple ci-dessous, une clé cryptographiquement sécurisée est créée et envoyée à GrabzIt, elle est ensuite utilisée pour crypter la capture. Cette même clé de chiffrement est ensuite utilisée pour décrypter le résultat.
grabzIt = GrabzItClient.GrabzItClient("Sign in to view your Application Key", "Sign in to view your Application Secret") grabzIt.UseSSL(True) encryptionKey = grabzIt.CreateEncryptionKey() options = GrabzItImageOptions.GrabzItImageOptions() options.encryptionKey = encryptionKey grabzIt.URLToImage("http://www.spacex.com", options) encryptedData = grabzIt.SaveTo() decryptedData = grabzIt.Decrypt(encryptedData, encryptionKey)
Dans l'exemple ci-dessous, une clé cryptographiquement sécurisée est créée et envoyée à GrabzIt, elle est ensuite utilisée pour crypter la capture. Cette même clé de chiffrement est ensuite utilisée pour décrypter le résultat.
grabzIt = GrabzIt::Client.new("Sign in to view your Application Key", "Sign in to view your Application Secret") grabzIt.use_ssl(true) encryptionKey = grabzIt.create_encryption_key() options = GrabzIt::ImageOptions.new() options.encryptionKey = encryptionKey grabzIt.url_to_image("http://www.spacex.com", options) encryptedData = grabzIt.save_to() decryptedData = grabzIt.decrypt(encryptedData, encryptionKey)
Ce guide est très technique et vise à aider les développeurs à comprendre le fonctionnement de notre chiffrement. Il devrait être particulièrement utile aux développeurs Perl, car le langage ne dispose pas d'un package Perl open source qui ne nécessite pas l'achèvement ou l'installation d'outils tiers comme Open SSL.
Les captures cryptées utilisent le cryptage Advanced Encryption Standard (AES) 256 bits. Il utilise également un mode de fonctionnement de chiffrement par blocs Cipher Block Chaining (CBC).
Pour que GrabzIt chiffre une capture, une clé de chiffrement en base 64 de 44 caractères doit être transmise à l'objet option. Pour créer cette clé de cryptage, vous devez choisir 32 octets aléatoires sécurisés cryptographiquement. Ceux-ci doivent ensuite être codés en base 64. Comme il s’agit d’octets cryptographiquement sécurisés, ils seront difficiles à prédire et donc plus difficiles à déchiffrer.
Lorsque GrabzIt reçoit une demande de capture avec une clé de cryptage, la capture est cryptée et le vecteur d'initialisation (IV) est inséré au début du fichier. Ce IV fait 16 octets et doit être supprimé du début du fichier avant le décryptage. Le IV doit également être transmis à l'algorithme AES pour permettre le déchiffrement. Lorsqu'une capture est cryptée, aucun remplissage n'est ajouté au fichier, donc lors du déchiffrement, le remplissage doit être désactivé.
N'oubliez pas que si vous avez créé une amélioration à l'une de nos API client existantes ou pour un langage entièrement nouveau, vous pouvez la partager avec la communauté via github.