捕獲和轉換Web的工具

如何保護拍攝內容?

加密捕獲

在諸如通用數據保護條例或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密碼術擴展(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.4.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上.