Webをキャプチャして変換するツール

キャプチャのコンテンツを保護する方法は?

暗号化されたキャプチャ

一般データ保護規則やGDPRなどの法律の時代において、ユーザーの情報を保護することはこれまで以上に重要になっています。 キャプチャが取得されると、サーバーに短時間キャッシュされ、ダウンロードできるようになります。 サーバーは安全であり、ユーザーのキャプチャを許可なく検査することはありません。 これは、個人情報を処理するいくつかのシナリオで十分な保護ではありません。

最初の潜在的な改善は、キャッシュの長さをゼロ分に変更することにより、キャプチャをキャッシュしないことです。 アカウントページ。 ただし、これはキャプチャが非常に長い間ダウンロードできないため、作成後すぐにダウンロードする必要があることを意味します。

もう1つのセキュリティ上の懸念は、機密データを送信する実際のプロセスです。 このデータを保護するには、まず SSLを有効にする、データを受信して​​処理されると(非常に高速に発生します)、システムから自動的に削除され、セキュリティ侵害がないことを確認します。

次の方法でPDFまたはDOCXキャプチャにセキュリティを追加することもできます。 ドキュメントを保護するパスワード。 これにより、正しいパスワードを持つユーザーのみが保護されたファイルにアクセスできるようになります。

ただし、病院の記録などの非常に機密性の高い情報をキャプチャしていて、さらに高いレベルの保護が必要な場合は、結果のキャプチャ自体を暗号化できます。 これを行うには、各リクエストで暗号化キーを指定します。これらのキーはGrabzItによって保存されません。 このキーは、情報を保護するキャプチャを暗号化するために使用されます。 キーを保存しないため、暗号化されたキャプチャを回復することはできません。 キャプチャを受け取ったら、前に生成したキーを使用して、復号化します。

以下の例では、暗号化された安全なキーが作成され、GrabzItに送信され、キャプチャの暗号化に使用されます。 次に、この同じ暗号化キーを使用して結果を復号化します。

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);

以下の例では、暗号化された安全なキーが作成され、GrabzItに送信され、キャプチャの暗号化に使用されます。 次に、この同じ暗号化キーを使用して結果を復号化します。

Java 6、7、および8で暗号化されたキャプチャを使用するには、Java Cryptography Extension(JCE)Unlimited Strength Jurisdiction Policy Filesをインストールしてください into Javaインストールフォルダーのすべての/ jre / lib / security /フォルダー。

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);

以下の例では、暗号で保護されたキーが自動的に作成され、GrabzItに送信されます。これは、キャプチャの暗号化に使用されます。 この同じ暗号化キーを使用して、trueをDataURIメソッドに渡すことで結果を自動的に復号化し、コールバックメソッドで読み取ることができます。

<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/@grabzit/js@3.4.8/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>

以下の例では、暗号化された安全なキーが作成され、GrabzItに送信され、キャプチャの暗号化に使用されます。 次に、この同じ暗号化キーを使用して結果を復号化します。

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);
}); 	

残念ながら、PerlはAES暗号化をネイティブに解読できず、外部の実行可能ファイルまたはCコンパイルが必要です。 したがって、この機能をPerl APIに追加していないので、代わりに以下のガイドを使用してこの機能を自分で追加できます。

$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();

以下の例では、暗号化された安全なキーが作成され、GrabzItに送信され、キャプチャの暗号化に使用されます。 次に、この同じ暗号化キーを使用して結果を復号化します。

$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);

以下の例では、暗号化された安全なキーが作成され、GrabzItに送信され、キャプチャの暗号化に使用されます。 次に、この同じ暗号化キーを使用して結果を復号化します。

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)

以下の例では、暗号化された安全なキーが作成され、GrabzItに送信され、キャプチャの暗号化に使用されます。 次に、この同じ暗号化キーを使用して結果を復号化します。

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)

GrabzItのキャプチャ暗号化の仕組み

このガイドは非常に技術的であり、暗号化の仕組みを開発者が理解できるようにすることを目的としています。 この言語には、オープンSSLのようなサードパーティツールの完成やインストールを必要としないオープンソースのPerlパッケージがないため、Perl開発者にとって特に役立つはずです。

暗号化されたキャプチャは、256ビットAdvanced Encryption Standard(AES)暗号化を使用します。 また、Cipher Block Chaining(CBC)ブロック暗号モードの操作も使用します。

GrabzItがキャプチャを暗号化するには、64文字の長さがオプションオブジェクトに渡される必要があるベース44暗号化キーを使用します。 この暗号化キーを作成するには、32ランダム暗号化セキュアバイトを選択する必要があります。 次に、これらをベース64にエンコードする必要があります。 暗号化された安全なバイトであるため、予測が難しく、ひ​​いては解読が困難になります。

GrabzItが暗号化キーを含むキャプチャリクエストを受信すると、キャプチャが暗号化され、ファイルの先頭に初期化ベクトル(IV)が挿入されます。 このIVは16バイト長であり、復号化の前にファイルの先頭から削除する必要があります。 復号化を有効にするには、IVもAESアルゴリズムに渡す必要があります。 キャプチャが暗号化されている場合、パディングはファイルに追加されないため、パディングの復号化を無効にする必要があります。

既存のクライアントAPIのいずれか、またはまったく新しい言語の改善点を作成した場合は、次の方法でコミュニティと共有できます。 githubの.