웹 캡처 및 변환 도구

캡처 내용을 보호하는 방법은 무엇입니까?

암호화된 캡처

일반 데이터 보호 규정 또는 GDPR과 같은 법률 시대에 사용자 정보를 보호하는 것이 그 어느 때보다 중요해졌습니다. 캡처가 수행되면 다운로드가 가능하도록 짧은 시간 동안 당사 서버에 캐시됩니다. 우리 서버는 안전하지만 허가 없이 사용자의 캡처를 검사하지 않습니다. 이는 개인 정보를 처리할 때 일부 시나리오에서는 충분한 보호가 되지 않습니다.

첫 번째 잠재적인 개선점은 캐시 길이를 XNUMX분으로 변경하여 더 이상 캐시 캡처를 하지 않는 것입니다. 계정 페이지. 그러나 이는 캡처를 오랫동안 다운로드할 수 없다는 것을 의미하므로 캡처가 생성된 후 즉시 다운로드해야 합니다.

또 다른 보안 문제는 민감한 데이터를 당사에 전송하는 실제 프로세스입니다. 이 데이터를 보호하려면 먼저 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에서 암호화된 캡처를 사용하려면 JCE(Java Cryptography Extension) 무제한 강도 관할권 정책 파일을 설치하십시오. 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로 전송된 후 캡처를 암호화하는 데 사용됩니다. 그런 다음 동일한 암호화 키를 사용하여 DataURI 메서드에 true를 전달하여 결과를 자동으로 해독하고 콜백 메서드에서 읽을 수 있습니다.

<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의 캡처 암호화 작동 방식

이 가이드는 매우 기술적이며 개발자가 암호화 작동 방식을 이해하도록 돕는 것을 목표로 합니다. 이 언어에는 Open SSL과 같은 타사 도구의 완성이나 설치가 필요하지 않은 오픈 소스 Perl 패키지가 없기 때문에 Perl 개발자에게 특히 유용합니다.

암호화된 캡처는 256비트 AES(Advanced Encryption Standard) 암호화를 사용합니다. 또한 CBC(Cipher Block Chaining) 블록 암호화 작동 모드를 사용합니다.

GrabzIt이 캡처를 암호화하려면 64자 길이의 기본 44 암호화 키를 옵션 개체에 전달해야 합니다. 이 암호화 키를 생성하려면 암호화된 보안 바이트 32개를 무작위로 선택해야 합니다. 그런 다음 이러한 바이트는 베이스 64로 인코딩되어야 합니다. 암호화된 보안 바이트이므로 예측하기 어렵고 해독하기가 더 어렵습니다.

GrabzIt이 암호화 키가 포함된 캡처 요청을 받으면 캡처가 암호화되고 파일 시작 부분에 초기화 벡터(IV)가 삽입됩니다. 이 IV는 길이가 16바이트이며 암호를 해독하기 전에 파일 앞에서 제거해야 합니다. 또한 해독을 활성화하려면 IV를 AES 알고리즘에 전달해야 합니다. 캡처가 암호화되면 파일에 패딩이 추가되지 않으므로 복호화 시 패딩을 비활성화해야 합니다.

기존 클라이언트 API 중 하나를 개선했거나 완전히 새로운 언어를 개발한 경우 다음을 통해 커뮤니티와 공유할 수 있습니다. github.