捕获和转换Web的工具

如何保护拍摄内容?

加密捕获

在诸如通用数据保护条例或GDPR这样的法律时代,保护用户信息变得比以往任何时候都更为重要。 捕获后,它会在我们的服务器上缓存一小段时间,以便下载。 尽管我们的服务器是安全的,但未经许可我们不会检查用户的捕获。 在某些情况下,处理个人信息时这还不够。

第一个潜在的改进是通过将缓存长度更改为零分钟来不再缓存捕获 帐户页面。 但是请注意,这将意味着捕获文件很长时间将无法下载,因此必须在创建后立即下载。

另一个可能的安全问题是向我们发送敏感数据的实际过程。 为了保护此数据,您应该首先 启用S​​SL,那么一旦我们接收到数据并对其进行处理(这一过程非常迅速),它将自动从我们的系统中删除,以确保不存在安全漏洞。

还可以通过以下方式将更多安全性添加到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密码学扩展(JCE)无限强度管辖权策略文件 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.3.7/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位高级加密标准(AES)加密。 它还使用密码块链接(CBC)块密码操作模式。

为了使GrabzIt加密捕获的内容,需要将64个字符长的基本44加密密钥传递给选项对象。 要创建此加密密钥,您应该选择32个随机加密安全字节。 然后应将它们编码为基于64的形式。 由于它们是加密安全的字节,因此将很难预测,因此更难破解。

当GrabzIt收到带有加密密钥的捕获请求时,捕获将被加密并将初始化向量(IV)插入文件的开头。 该IV为16字节长,需要在解密前从文件的开头删除。 IV也必须传递给AES算法以启用解密。 对捕获进行加密时,不会向文件中添加填充,因此在解密填充时需要禁用。

请记住,如果您对我们现有的客户端API之一进行了改进,或者使用了全新的语言,则可以通过以下方式与社区共享: github上.