ویب پر گرفت اور تبدیل کرنے کے اوزار

گرفتاریوں کے مواد کو کیسے بچایا جائے؟

انکرپٹڈ کیپچرز

جنرل ڈیٹا پروٹیکشن ریگولیشن، یا GDPR جیسے قوانین کے دور میں صارف کی معلومات کی حفاظت پہلے سے کہیں زیادہ اہم ہو گئی ہے۔ جب کوئی کیپچر لیا جاتا ہے تو اسے ہمارے سرورز پر تھوڑی دیر کے لیے کیش کر دیا جاتا ہے تاکہ اسے ڈاؤن لوڈ کیا جا سکے۔ جب کہ ہمارے سرور محفوظ ہیں اور ہم بغیر اجازت کے کسی صارف کے کیپچرز کا معائنہ نہیں کرتے ہیں۔ ذاتی معلومات کو سنبھالتے وقت کچھ منظرناموں میں یہ کافی تحفظ نہیں ہے۔

پہلی ممکنہ بہتری یہ ہے کہ کیشے کی لمبائی کو صفر منٹ میں تبدیل کرکے مزید کیش کیپچرز کو اپنے اکاؤنٹ کا صفحہ. تاہم نوٹ کریں، اس کا مطلب یہ ہوگا کہ کیپچر زیادہ دیر تک ڈاؤن لوڈ کرنے کے لیے دستیاب نہیں ہوگا، اس لیے اسے بننے کے فوراً بعد ڈاؤن لوڈ کرنا چاہیے۔

ایک اور ممکنہ سیکیورٹی تشویش ہمیں حساس ڈیٹا بھیجنے کا اصل عمل ہے۔ اس ڈیٹا کو محفوظ کرنے کے لیے آپ کو پہلے کرنا چاہیے۔ SSL کو فعال کریں۔، پھر ایک بار جب ہمیں ڈیٹا موصول ہو جاتا ہے اور اس پر کارروائی ہو جاتی ہے، جو کہ بہت تیزی سے ہوتا ہے، تو یہ خود بخود ہمارے سسٹم سے حذف ہو جائے گا تاکہ یہ یقینی بنایا جا سکے کہ کوئی حفاظتی خلاف ورزی نہیں ہے۔

مزید سیکورٹی کو پی ڈی ایف یا 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 کو بھیجی گئی ہے، اس کے بعد اسے کیپچر کو خفیہ کرنے کے لیے استعمال کیا جاتا ہے۔ اسی انکرپشن کلید کو پھر نتیجہ کو ڈکرپٹ کرنے کے لیے استعمال کیا جاتا ہے۔

جاوا 6، 7 اور 8 کے ساتھ انکرپٹڈ کیپچرز استعمال کرنے کے لیے براہ کرم جاوا کرپٹوگرافی ایکسٹینشن (JCE) لامحدود طاقت کے دائرہ اختیار کی پالیسی فائلیں انسٹال کریں۔ into جاوا انسٹالیشن فولڈرز کے تمام /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 کو بھیجی جاتی ہے، اس کے بعد اسے کیپچر کو خفیہ کرنے کے لیے استعمال کیا جاتا ہے۔ اسی انکرپشن کلید کو ڈیٹا یو آر آئی کے طریقہ کار کو درست کر کے نتیجہ کو خود بخود ڈکرپٹ کرنے کے لیے استعمال کیا جاتا ہے، جسے پھر کال بیک طریقہ میں پڑھا جا سکتا ہے۔

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

بدقسمتی سے پرل 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 کی کیپچر انکرپشن کیسے کام کرتی ہے۔

یہ گائیڈ بہت تکنیکی ہے اور اس کا مقصد ڈویلپرز کو یہ سمجھنے میں مدد کرنا ہے کہ ہماری انکرپشن کیسے کام کرتی ہے۔ یہ پرل ڈویلپرز کے لیے خاص طور پر استعمال ہونا چاہیے، کیونکہ زبان میں اوپن سورس پرل پیکیج نہیں ہے جس کے لیے اوپن SSL جیسے تھرڈ پارٹی ٹولز کی تکمیل یا انسٹالیشن کی ضرورت نہیں ہے۔

انکرپٹڈ کیپچرز 256 بٹ ایڈوانسڈ انکرپشن سٹینڈرڈ (AES) انکرپشن کا استعمال کرتے ہیں۔ یہ سائفر بلاک چیننگ (CBC) بلاک سائفر موڈ آف آپریشن کا بھی استعمال کرتا ہے۔

GrabzIt کے لیے کیپچر کو خفیہ کرنے کے لیے ایک بیس 64 انکرپشن کلید ہے جسے آپشن آبجیکٹ میں 44 حروف طویل کرنے کی ضرورت ہے۔ اس انکرپشن کلید کو بنانے کے لیے آپ کو 32 بے ترتیب کرپٹوگرافی طور پر محفوظ بائٹس کا انتخاب کرنا چاہیے۔ پھر ان کو بیس 64 میں انکوڈ کیا جانا چاہیے۔ چونکہ یہ خفیہ نگاری کے لحاظ سے محفوظ بائٹس ہیں ان کی پیشن گوئی کرنا مشکل ہوگا اور اس لیے ٹوٹنا مشکل ہوگا۔

جب GrabzIt کو ایک انکرپشن کلید کے ساتھ کیپچر کی درخواست موصول ہوتی ہے، تو کیپچر کو انکرپٹ کیا جاتا ہے اور فائل کے شروع میں ابتدائی ویکٹر (IV) داخل کیا جاتا ہے۔ یہ IV 16 بائٹس لمبا ہے اور اسے ڈکرپشن سے پہلے فائل کے سامنے سے ہٹانے کی ضرورت ہے۔ خفیہ کاری کو فعال کرنے کے لیے IV کو AES الگورتھم کے پاس بھی جانا چاہیے۔ جب ایک کیپچر کو خفیہ کیا جاتا ہے تو فائل میں کوئی پیڈنگ شامل نہیں کی جاتی ہے لہذا جب پیڈنگ کو ڈکرپٹ کرنا غیر فعال کرنا ہوتا ہے۔

یاد رکھیں اگر آپ نے ہمارے موجودہ کلائنٹ API میں سے کسی ایک میں بہتری پیدا کی ہے یا بالکل نئی زبان کے لیے آپ اسے کمیونٹی کے ساتھ اشتراک کر سکتے ہیں گاٹہوب.