Инструменты для захвата и конвертирования Интернета

Как защитить содержимое снимков?

Зашифрованные снимки

В эпоху таких законов, как Общий регламент по защите данных или GDPR, защита информации пользователя стала более важной, чем когда-либо. Когда захват сделан, он на короткое время кэшируется на наших серверах, чтобы его можно было загрузить. Хотя наши серверы безопасны, и мы не проверяем записи пользователей без разрешения. В некоторых сценариях при работе с личной информацией такой защиты недостаточно.

Первое потенциальное улучшение — отказаться от захвата данных в кэше, изменив продолжительность кэша на ноль минут на вашем компьютере. счетом страница. Однако учтите, что это будет означать, что снимок не будет доступен для загрузки в течение очень долгого времени, поэтому его необходимо загрузить сразу после его создания.

Еще одна возможная проблема безопасности — это сам процесс отправки нам конфиденциальных данных. Чтобы обезопасить эти данные, вам следует сначала включить 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). into все папки /jre/lib/security/ в папках установки 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);

В приведенном ниже примере автоматически создается криптографически безопасный ключ, который отправляется в GrabzIt, а затем используется для шифрования захвата. Этот же ключ шифрования затем используется для автоматической расшифровки результата путем передачи true методу DataURI, который затем можно прочитать в методе обратного вызова.

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

В приведенном ниже примере создается криптографически безопасный ключ, который отправляется в 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

Это руководство носит очень технический характер и призвано помочь разработчикам понять, как работает наше шифрование. Он должен быть особенно полезен разработчикам Perl, поскольку язык не имеет пакета Perl с открытым исходным кодом, который не требует завершения или установки сторонних инструментов, таких как Open SSL.

Зашифрованные снимки используют 256-битное шифрование Advanced Encryption Standard (AES). Он также использует режим блочного шифрования Cipher Block Chaining (CBC).

Чтобы GrabzIt зашифровал захват, в объект опции необходимо передать ключ шифрования Base 64 длиной 44 символа. Чтобы создать этот ключ шифрования, вам необходимо выбрать 32 случайных криптографически безопасных байта. Затем их следует закодировать в кодировке Base64. Поскольку они представляют собой криптографически безопасные байты, их будет трудно предсказать и, следовательно, труднее взломать.

Когда GrabzIt получает запрос на захват с ключом шифрования, захват шифруется, а вектор инициализации (IV) вставляется в начало файла. Этот IV имеет длину 16 байт и его необходимо удалить из начала файла перед расшифровкой. IV также необходимо передать алгоритму AES, чтобы обеспечить расшифровку. Когда захват зашифрован, в файл не добавляется дополнение, поэтому при расшифровке дополнение необходимо отключить.

Помните, что если вы создали улучшение одного из наших существующих клиентских API или создали совершенно новый язык, вы можете поделиться им с сообществом через GitHub.