ভিবিস্ক্রিপ্ট (VBScript) ওয়েব স্ক্রিপ্টিং এবং অটোমেশন স্ক্রিপ্টিংয়ের জন্য একটি শক্তিশালী ভাষা হলেও, এটি যদি সঠিকভাবে ব্যবহৃত না হয় তবে নিরাপত্তা ঝুঁকি তৈরি করতে পারে। ওয়েব অ্যাপ্লিকেশন এবং সিস্টেম অ্যাপ্লিকেশন তৈরি করার সময় সিকিউর কোডিং টেকনিকস অনুসরণ করা অত্যন্ত গুরুত্বপূর্ণ। নিরাপত্তা ব্যবস্থার উন্নতির জন্য কিছু বিশেষ কোডিং পদ্ধতি অনুসরণ করা উচিত।
এখানে কিছু সিকিউর কোডিং টেকনিকস আলোচনা করা হচ্ছে যা ভিবিস্ক্রিপ্টে নিরাপত্তা বাড়াতে সাহায্য করবে।
১. ইনপুট ভ্যালিডেশন এবং স্যানিটাইজেশন
এটি সিকিউর কোডিংয়ের সবচেয়ে গুরুত্বপূর্ণ অংশ, বিশেষ করে ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে। যেকোনো ব্যবহারকারীর ইনপুট (যেমন ফর্মে ডেটা, URL প্যারামিটার, কুকি) সঠিকভাবে যাচাই এবং স্যানিটাইজ করা উচিত যাতে তা SQL ইনজেকশন, ক্রস-সাইট স্ক্রিপ্টিং (XSS) ইত্যাদি আক্রমণ থেকে রক্ষা পায়।
উদাহরণ: ইনপুট ভ্যালিডেশন
Dim userInput
userInput = Request.Form("userInput")
' ইনপুট স্যানিটাইজেশন (বিশ্বস্ত অক্ষর ছাড়া কিছু প্রবেশ করতে না দেওয়া)
If Not IsNumeric(userInput) Then
MsgBox "Invalid input!"
Else
' নিরাপদ কোড চলবে
End If
এখানে, IsNumeric ফাংশন ব্যবহার করে ইনপুটের সংখ্যা হওয়ার নিশ্চয়তা যাচাই করা হয়েছে।
২. SQL ইনজেকশন থেকে প্রতিরোধ
SQL ইনজেকশন আক্রমণের অন্যতম প্রধান কারণ হল ব্যবহারকারীর ইনপুটকে সঠিকভাবে স্যানিটাইজ না করা। ভিবিস্ক্রিপ্টে SQL কোয়েরি তৈরি করার সময় Prepared Statements এবং Parameterized Queries ব্যবহার করা উচিত, কিন্তু VBScript এ এই কনসেপ্ট সরাসরি সমর্থিত নয়। তবে, ইনপুট স্যানিটাইজেশন এবং ESCAPE ব্যবহার করে কিছু নিরাপত্তা নিশ্চিত করা যেতে পারে।
উদাহরণ: SQL ইনজেকশন প্রতিরোধ
Dim userInput, query
userInput = Request.Form("username")
' SQL ইনজেকশন থেকে রক্ষা পেতে ইউজার ইনপুট স্যানিটাইজেশন
userInput = Replace(userInput, "'", "''") ' সিঙ্গেল কোটিকে এস্কেপ করা
query = "SELECT * FROM Users WHERE username = '" & userInput & "'"
এখানে, Replace ফাংশন ব্যবহার করে সিঙ্গেল কোটিকে ডাবল কোটে রূপান্তর করা হয়েছে, যাতে SQL ইনজেকশন প্রতিরোধ করা যায়।
৩. কোড এডিটিং এবং ডিবাগিং তথ্য সুরক্ষিত রাখা
Error Handling এবং ডিবাগging তথ্য প্রকাশ করা থেকে বিরত থাকা উচিত, কারণ এতে আক্রমণকারী সহজেই অ্যাপ্লিকেশনটির দুর্বলতা চিহ্নিত করতে পারে। সুতরাং, প্রকৃত পরিবেশে ডিবাগিং তথ্য প্রকাশ না করা উচিত।
উদাহরণ: সঠিক ত্রুটি পরিচালনা
On Error Resume Next ' ত্রুটি এড়ানো
Dim conn, sqlQuery
Set conn = CreateObject("ADODB.Connection")
conn.Open "DatabaseConnectionString"
If Err.Number <> 0 Then
MsgBox "Something went wrong, please try again later." ' ব্যবহারকারীর জন্য সাধারণ ত্রুটি বার্তা
Err.Clear
End If
এখানে, ত্রুটি ঘটলে সাধারণ একটি বার্তা প্রদর্শিত হবে, কিন্তু বিস্তারিত ত্রুটি তথ্য প্রকাশ করা হবে না।
৪. ক্রস-সাইট স্ক্রিপ্টিং (XSS) আক্রমণ থেকে রক্ষা
ক্রস-সাইট স্ক্রিপ্টিং (XSS) আক্রমণগুলি তখন ঘটে যখন একটি ব্যবহারকারী স্ক্রিপ্ট কোডকে ওয়েব পেজে ইনপুট হিসেবে পাঠাতে পারে এবং সেই কোডটি অন্য ব্যবহারকারীর ব্রাউজারে এক্সিকিউট হয়। স্ক্রিপ্টের ইনপুট ভ্যালিডেশন এবং স্যানিটাইজেশন করা উচিত, যাতে কোনও অপ্রত্যাশিত কোড কার্যকর না হয়।
উদাহরণ: XSS আক্রমণ থেকে রক্ষা
Dim userInput
userInput = Request.Form("comment")
' XSS আক্রমণ প্রতিরোধের জন্য HTML এনকোডিং
userInput = Replace(userInput, "<", "<")
userInput = Replace(userInput, ">", ">")
' ইনপুট স্যানিটাইজেশন শেষে এটি পেজে প্রদর্শন করা হবে
Response.Write userInput
এখানে, Replace ফাংশন ব্যবহার করে < এবং > সিম্বলগুলোকে HTML এনকোড করা হয়েছে, যাতে স্ক্রিপ্ট কার্যকর না হয়।
৫. সেশন ম্যানেজমেন্ট এবং কুকি নিরাপত্তা
সেশন এবং কুকি ব্যবস্থাপনা সঠিকভাবে করা উচিত। সেশন আইডি এবং কুকির জন্য HTTPOnly এবং Secure ফ্ল্যাগ ব্যবহার করা উচিত, যাতে তৃতীয় পক্ষের আক্রমণকারী এগুলিকে চুরি করতে না পারে।
উদাহরণ: কুকি নিরাপত্তা
Response.Cookies("sessionID") = "unique_session_id"
Response.Cookies("sessionID").Secure = True ' HTTPS কেবল ব্যবহার করুন
Response.Cookies("sessionID").HttpOnly = True ' JavaScript দ্বারা অ্যাক্সেস না হওয়া
এখানে, Secure এবং HttpOnly ফ্ল্যাগগুলি কুকির নিরাপত্তা বাড়ায়।
৬. নিরাপদ ফাইল ম্যানিপুলেশন
ফাইল অপারেশন করার সময়, ব্যবহারকারীর ইনপুটের মাধ্যমে কোন অপ্রত্যাশিত ফাইল অ্যাক্সেস করা থেকে বিরত থাকতে হবে। এই জন্য সঠিক ফাইল পাথ ভ্যালিডেশন এবং ফাইল টাইপ চেক করা উচিত।
উদাহরণ: ফাইল পাথ ভ্যালিডেশন
Dim filePath
filePath = Request.Form("filePath")
' নিরাপদ পাথ যাচাই
If InStr(filePath, "..") > 0 Then
MsgBox "Invalid file path!"
Else
' ফাইল অপারেশন চলবে
End If
এখানে, InStr ফাংশন ব্যবহার করে নিশ্চিত করা হচ্ছে যে ইনপুট পাথটি .. (যা পিতৃ ডিরেক্টরি নির্দেশ করে) ধারণ করে না, যাতে ডিরেক্টরি ট্র্যাভার্সাল আক্রমণ প্রতিরোধ করা যায়।
সারাংশ
ভিবিস্ক্রিপ্ট (VBScript) এ সিকিউর কোডিং নিশ্চিত করতে কিছু গুরুত্বপূর্ণ টেকনিকস অনুসরণ করা উচিত, যেমন:
- ইনপুট ভ্যালিডেশন এবং স্যানিটাইজেশন: ব্যবহারকারীর ইনপুট যাচাই করা উচিত যাতে SQL ইনজেকশন বা XSS আক্রমণ প্রতিরোধ করা যায়।
- ত্রুটি হ্যান্ডলিং: ত্রুটি ব্যবস্থাপনা করার সময় কোনও সুনির্দিষ্ট ত্রুটি বার্তা ব্যবহার না করে সাধারণ বার্তা প্রদান করা উচিত।
- কুকি নিরাপত্তা: কুকির জন্য HttpOnly এবং Secure ফ্ল্যাগ ব্যবহার করা।
- ফাইল ম্যানিপুলেশন নিরাপত্তা: ব্যবহারকারীর ইনপুটের মাধ্যমে অবাঞ্ছিত ফাইল অ্যাক্সেস প্রতিরোধ করা।
এই সিকিউর কোডিং টেকনিকস অনুসরণ করে ভিবিস্ক্রিপ্টের নিরাপত্তা বৃদ্ধি করা সম্ভব।
Read more