Ferramentas para capturar e converter a Web

Como proteger o conteúdo das capturas?

Capturas criptografadas

Na era de leis como o Regulamento Geral de Proteção de Dados ou GDPR, a proteção das informações do usuário tornou-se mais importante do que nunca. Quando uma captura é feita, ela é armazenada em cache por um curto período de tempo em nossos servidores para permitir o download. Embora nossos servidores sejam seguros e não inspecionamos as capturas de um usuário sem permissão. Isto não é proteção suficiente em alguns cenários ao lidar com informações pessoais.

A primeira melhoria potencial é não armazenar mais capturas em cache, alterando o comprimento do cache para zero minutos, no seu página da conta. Observe, entretanto, que isso significa que a captura não estará disponível para download por muito tempo, portanto deve ser baixada imediatamente após ser criada.

Outra possível preocupação de segurança é o processo real de envio de dados confidenciais para nós. Para proteger esses dados, você deve primeiro ativar SSL, assim que recebermos os dados e eles forem processados, o que acontece muito rapidamente, eles serão automaticamente excluídos do nosso sistema para garantir que não haja violação de segurança.

Mais segurança também pode ser adicionada às capturas de PDF ou DOCX, senha protegendo os documentos. Isso garante que apenas os usuários com a senha correta possam acessar um arquivo protegido.

No entanto, se você estiver capturando informações muito confidenciais, como registros hospitalares, etc., e quiser um nível extra de proteção, poderá criptografar as próprias capturas resultantes. Para fazer isso, você especifica uma chave de criptografia em cada solicitação; essas chaves não são armazenadas pelo GrabzIt. Esta chave será usada para criptografar a captura protegendo as informações. Como não armazenamos a chave, não podemos ajudá-lo a recuperar capturas criptografadas. Depois de receber a captura, use a chave gerada anteriormente para descriptografá-la.

No exemplo abaixo, uma chave criptograficamente segura é criada e enviada para GrabzIt, que é então usada para criptografar a captura. Essa mesma chave de criptografia é então usada para descriptografar o resultado.

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

No exemplo abaixo, uma chave criptograficamente segura é criada e enviada para GrabzIt, que é então usada para criptografar a captura. Essa mesma chave de criptografia é então usada para descriptografar o resultado.

Para usar capturas criptografadas com Java 6, 7 e 8, instale os arquivos de política de jurisdição de força ilimitada do Java Cryptography Extension (JCE) into todas as pastas /jre/lib/security/ das pastas de instalação do 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);

No exemplo abaixo, uma chave criptograficamente segura é automaticamente criada e enviada para GrabzIt, que é então usada para criptografar a captura. Essa mesma chave de criptografia é então usada para descriptografar o resultado automaticamente, passando true para o método DataURI, que pode então ser lido no método de retorno de chamada.

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

No exemplo abaixo, uma chave criptograficamente segura é criada e enviada para GrabzIt, que é então usada para criptografar a captura. Essa mesma chave de criptografia é então usada para descriptografar o resultado.

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

Infelizmente, Perl não pode descriptografar a criptografia AES nativamente e requer executáveis ​​externos ou compilação C. Portanto, não adicionamos essa funcionalidade à nossa API Perl. Em vez disso, você mesmo pode adicionar essa funcionalidade usando o guia abaixo.

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

No exemplo abaixo, uma chave criptograficamente segura é criada e enviada para GrabzIt, que é então usada para criptografar a captura. Essa mesma chave de criptografia é então usada para descriptografar o resultado.

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

No exemplo abaixo, uma chave criptograficamente segura é criada e enviada para GrabzIt, que é então usada para criptografar a captura. Essa mesma chave de criptografia é então usada para descriptografar o resultado.

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)

No exemplo abaixo, uma chave criptograficamente segura é criada e enviada para GrabzIt, que é então usada para criptografar a captura. Essa mesma chave de criptografia é então usada para descriptografar o resultado.

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)

Como funciona a criptografia de captura do GrabzIt

Este guia é muito técnico e tem como objetivo ajudar os desenvolvedores a entender como funciona nossa criptografia. Deve ser de uso particular para desenvolvedores Perl, já que a linguagem não possui um pacote Perl de código aberto que não requer conclusão ou instalação de ferramentas de terceiros como Open SSL.

As capturas criptografadas usam criptografia Advanced Encryption Standard (AES) de 256 bits. Ele também usa um modo de operação de cifra de bloco Cipher Block Chaining (CBC).

Para que GrabzIt criptografe uma captura, uma chave de criptografia de base 64 com 44 caracteres precisa ser passada para o objeto de opção. Para criar esta chave de criptografia você deve escolher 32 bytes aleatórios criptograficamente seguros. Estes devem então ser codificados na base 64. Como são bytes criptograficamente seguros, serão difíceis de prever e, portanto, mais difíceis de quebrar.

Quando o GrabzIt recebe uma solicitação de captura com uma chave de criptografia, a captura é criptografada e o vetor de inicialização (IV) é inserido no início do arquivo. Este IV tem 16 bytes e precisa ser removido da frente do arquivo antes da descriptografia. O IV também deve ser passado ao algoritmo AES para permitir a descriptografia. Quando uma captura é criptografada, nenhum preenchimento é adicionado ao arquivo, portanto, ao descriptografar, o preenchimento precisa ser desativado.

Lembre-se de que se você criou uma melhoria para uma de nossas APIs de cliente existentes ou para uma linguagem totalmente nova, você pode compartilhá-la com a comunidade através github.