সাধারণ তথ্য সুরক্ষা রেগুলেশন বা 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-এ পাঠানো হয়েছে, এটি তারপর ক্যাপচার এনক্রিপ্ট করতে ব্যবহৃত হয়। এই একই এনক্রিপশন কী তারপর ফলাফল ডিক্রিপ্ট করতে ব্যবহার করা হয়।
Java 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 এনক্রিপশন ডিক্রিপ্ট করতে পারে না এবং বাহ্যিক এক্সিকিউটেবল বা সি সংকলন প্রয়োজন। তাই আমরা আমাদের পার্ল এপিআইতে এই কার্যকারিতা যোগ করিনি পরিবর্তে আপনি নীচের নির্দেশিকা ব্যবহার করে এই কার্যকারিতা নিজেই যোগ করতে পারেন।
$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)
এই নির্দেশিকাটি খুবই প্রযুক্তিগত এবং আমাদের এনক্রিপশন কীভাবে কাজ করে তা বুঝতে বিকাশকারীদের সাহায্য করাই এর লক্ষ্য৷ এটি পার্ল ডেভেলপারদের জন্য বিশেষভাবে ব্যবহার করা উচিত, কারণ ভাষাটিতে একটি ওপেন সোর্স পার্ল প্যাকেজ নেই যার জন্য ওপেন SSL এর মতো তৃতীয় পক্ষের সরঞ্জামগুলি সম্পূর্ণ করার বা ইনস্টল করার প্রয়োজন নেই।
এনক্রিপ্ট করা ক্যাপচার 256 বিট অ্যাডভান্সড এনক্রিপশন স্ট্যান্ডার্ড (AES) এনক্রিপশন ব্যবহার করে। এটি অপারেশনের একটি সাইফার ব্লক চেইনিং (CBC) ব্লক সাইফার মোড ব্যবহার করে।
GrabzIt-এর জন্য একটি ক্যাপচার এনক্রিপ্ট করার জন্য একটি বেস 64 এনক্রিপশন কী যা 44 অক্ষর দীর্ঘ বিকল্প অবজেক্টে পাস করতে হবে। এই এনক্রিপশন কী তৈরি করতে আপনার 32টি র্যান্ডম ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত বাইট বেছে নেওয়া উচিত। এগুলিকে তখন বেস 64-এ এনকোড করা উচিত৷ যেহেতু এগুলি ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত বাইট, সেহেতু তাদের ভবিষ্যদ্বাণী করা কঠিন হবে এবং তাই ক্র্যাক করা কঠিন হবে৷
যখন GrabzIt একটি এনক্রিপশন কী সহ একটি ক্যাপচার অনুরোধ পায়, তখন ক্যাপচারটি এনক্রিপ্ট করা হয় এবং ফাইলের শুরুতে ইনিশিয়ালাইজেশন ভেক্টর (IV) ঢোকানো হয়। এই IV 16 বাইট দীর্ঘ এবং ডিক্রিপশনের আগে ফাইলের সামনে থেকে সরানো প্রয়োজন। ডিক্রিপ্টিং সক্ষম করতে IV অবশ্যই AES অ্যালগরিদমে পাস করতে হবে। যখন একটি ক্যাপচার এনক্রিপ্ট করা হয় তখন ফাইলে কোনো প্যাডিং যোগ করা হয় না তাই ডিক্রিপ্ট করার সময় প্যাডিং নিষ্ক্রিয় করা প্রয়োজন।
মনে রাখবেন আপনি যদি আমাদের বিদ্যমান ক্লায়েন্ট API-এর একটিতে উন্নতি করে থাকেন বা সম্পূর্ণ নতুন ভাষার জন্য আপনি এটি সম্প্রদায়ের সাথে ভাগ করতে পারেন GitHub.