أدوات لالتقاط وتحويل الويب

كيف تحمي محتوى اللقطات؟

لقطات مشفرة

في عصر القوانين مثل اللائحة العامة لحماية البيانات، أو القانون العام لحماية البيانات (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، ثم يتم استخدامه لتشفير الالتقاط. يتم بعد ذلك استخدام مفتاح التشفير نفسه لفك تشفير النتيجة تلقائيًا عن طريق تمرير صحيح إلى أسلوب 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.

تستخدم عمليات الالتقاط المشفرة تشفير معيار التشفير المتقدم (AES) 256 بت. ويستخدم أيضًا وضع تشفير كتلة Cipher Block Chaining (CBC).

لكي يقوم GrabzIt بتشفير الالتقاط، يجب تمرير مفتاح التشفير الأساسي المكون من 64 حرفًا والذي يبلغ طوله 44 حرفًا إلى كائن الخيار. لإنشاء مفتاح التشفير هذا، يجب عليك اختيار 32 بايت عشوائيًا آمنًا للتشفير. يجب بعد ذلك ترميزها إلى القاعدة 64. نظرًا لأنها بايتات آمنة تشفيريًا، سيكون من الصعب التنبؤ بها وبالتالي يصعب اختراقها.

عندما يتلقى GrabzIt طلب التقاط باستخدام مفتاح تشفير، يتم تشفير الالتقاط ويتم إدراج ناقل التهيئة (IV) في بداية الملف. يبلغ طول هذا IV 16 بايت ويجب إزالته من مقدمة الملف قبل فك التشفير. يجب أيضًا تمرير IV إلى خوارزمية AES لتمكين فك التشفير. عندما يتم تشفير الالتقاط، لا تتم إضافة أي حشوة إلى الملف، لذا يجب تعطيل الحشوة عند فك تشفيرها.

تذكر أنه إذا قمت بإنشاء تحسين لإحدى واجهات برمجة التطبيقات (API) الخاصة بالعميل الحالي لدينا أو للغة جديدة تمامًا، فيمكنك مشاركتها مع المجتمع من خلال جيثب.