CherryPy একটি লাইটওয়েট পাইথন ফ্রেমওয়ার্ক হলেও এতে কিছু শক্তিশালী সিকিউরিটি প্লাগইন রয়েছে, যা আপনার অ্যাপ্লিকেশনকে নিরাপদ রাখতে সহায়তা করে। CherryPy এর সিকিউরিটি প্লাগইনগুলো ব্যবহার করে আপনি Authentication, Authorization, Access Control, CSRF Protection, Input Validation, এবং অন্যান্য নিরাপত্তা ফিচার সহজেই অ্যাপ্লিকেশনে অন্তর্ভুক্ত করতে পারেন।
এখানে CherryPy তে সিকিউরিটি প্লাগইন ব্যবহারের জন্য কিছু গুরুত্বপূর্ণ টুলস এবং কৌশল আলোচনা করা হবে।
১. CherryPy এর tools সিকিউরিটি ফিচার
CherryPy এর tools সিস্টেম বিভিন্ন নিরাপত্তা ফিচার সরবরাহ করে, যা আপনি সহজেই আপনার অ্যাপ্লিকেশন কনফিগারেশনে অন্তর্ভুক্ত করতে পারেন।
CherryPy এর সাধারণ সিকিউরিটি টুলস:
- Authentication: ইউজার প্রমাণীকরণ পরিচালনা করতে।
- Authorization: ইউজার অনুমোদন যাচাই করতে।
- CSRF Protection: Cross-Site Request Forgery আক্রমণ প্রতিরোধ করতে।
- Access Control: রিসোর্সের অ্যাক্সেস সীমাবদ্ধ করতে।
২. Authentication: Basic Authentication
CherryPy তে Basic Authentication একটি সাধারণ অথেনটিকেশন পদ্ধতি, যেখানে ইউজারের পাসওয়ার্ড যাচাই করা হয়। এটি ডিফল্ট HTTP প্রোটোকল হেডারে ইউজারনেম এবং পাসওয়ার্ড পাঠায়।
উদাহরণ: Basic Authentication
import cherrypy
from cherrypy.lib import auth_basic
# ইউজারের পাসওয়ার্ড যাচাইয়ের জন্য ফাংশন
def check_password(realm, username, password):
users = {'admin': 'password123'} # ইউজার নাম এবং পাসওয়ার্ড
if users.get(username) == password:
return True
return False
class MyApp:
@cherrypy.expose
@cherrypy.tools.auth_basic(check_password) # Authentication টুল ব্যবহার করা
def index(self):
return "আপনি সফলভাবে লগইন করেছেন!"
if __name__ == '__main__':
cherrypy.quickstart(MyApp())
এখানে, auth_basic টুলটি ব্যবহার করা হয়েছে, যা ইউজারনেম এবং পাসওয়ার্ড যাচাই করে এবং অ্যাক্সেস অনুমোদন দেয়।
৩. Authorization: Role-Based Access Control (RBAC)
CherryPy তে Role-Based Access Control (RBAC) ব্যবহৃত হতে পারে, যেখানে ইউজারের রোল অনুযায়ী বিভিন্ন রিসোর্সে অ্যাক্সেস নিয়ন্ত্রণ করা হয়।
উদাহরণ: RBAC এর মাধ্যমে Authorization
import cherrypy
from cherrypy.lib import auth_basic
# ইউজারের রোল যাচাই করার ফাংশন
def check_role(realm, username, password):
users = {'admin': {'password': 'password123', 'role': 'admin'},
'guest': {'password': 'guest123', 'role': 'guest'}}
user = users.get(username)
if user and user['password'] == password:
return user['role']
return None
class MyApp:
@cherrypy.expose
@cherrypy.tools.auth_basic(check_role)
def index(self):
user_role = cherrypy.request.login
if user_role == 'admin':
return "স্বাগতম অ্যাডমিন!"
elif user_role == 'guest':
return "স্বাগতম অতিথি!"
else:
return "অ্যাপ্লিকেশনে লগইন করুন!"
if __name__ == '__main__':
cherrypy.quickstart(MyApp())
এখানে, check_role ফাংশনটি ইউজারের রোল যাচাই করে এবং রোল অনুযায়ী বিভিন্ন বার্তা প্রদর্শন করে।
৪. CSRF Protection (Cross-Site Request Forgery)
CherryPy তে CSRF Protection প্লাগইন ব্যবহার করে আপনি ওয়েব অ্যাপ্লিকেশনের জন্য সুরক্ষা বাড়াতে পারেন। CSRF আক্রমণ প্রতিরোধের জন্য একটি টোকেন ব্যবহার করা হয়, যা সার্ভার এবং ক্লায়েন্টের মধ্যে বৈধতা যাচাই করে।
উদাহরণ: CSRF Protection
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return "ফর্ম সাবমিট করুন"
@cherrypy.expose
def submit_form(self):
csrf_token = cherrypy.request.params.get('csrf_token')
if not csrf_token or csrf_token != 'valid_token':
return "CSRF আক্রমণ প্রতিরোধিত হয়েছে!"
return "ফর্ম সফলভাবে সাবমিট হয়েছে!"
if __name__ == '__main__':
cherrypy.quickstart(MyApp())
এখানে, csrf_token একটি কাস্টম ভ্যালিডেশন হিসেবে ব্যবহৃত হচ্ছে, যা ফর্ম সাবমিশন প্রক্রিয়াতে ব্যবহৃত হয় এবং CSRF আক্রমণ থেকে সুরক্ষা দেয়।
৫. Input Validation: Secure Input Handling
CherryPy তে Input Validation নিরাপত্তার একটি গুরুত্বপূর্ণ দিক। আপনি ইনপুটের ভ্যালিডেশন করতে পারেন যাতে ম্যালিশিয়াস ডেটা অ্যাপ্লিকেশনটিতে প্রবেশ না করতে পারে। এটি SQL ইনজেকশন বা স্ক্রিপ্টিং আক্রমণ প্রতিরোধে সহায়তা করে।
উদাহরণ: Input Validation
import cherrypy
import re
class MyApp:
@cherrypy.expose
def index(self):
return "ইনপুট যাচাইয়ের জন্য একটি ফর্ম সাবমিট করুন"
@cherrypy.expose
def submit_form(self, user_input):
if not re.match(r'^[a-zA-Z0-9]*$', user_input): # ইনপুটের জন্য সুরক্ষিত প্যাটার্ন
return "অবৈধ ইনপুট!"
return f"আপনার ইনপুট: {user_input}"
if __name__ == '__main__':
cherrypy.quickstart(MyApp())
এখানে, ইনপুট যাচাই করার জন্য Regular Expressions (regex) ব্যবহার করা হয়েছে যাতে শুধুমাত্র অনুমোদিত অক্ষরই ইনপুট হিসেবে গ্রহণ করা হয়।
৬. Rate Limiting (Request Throttling)
Rate Limiting বা রিকোয়েস্ট থ্রটলিং ব্যবহার করে আপনি API বা ওয়েব পৃষ্ঠাগুলির প্রতি ইউজারের রিকোয়েস্ট সংখ্যা সীমাবদ্ধ করতে পারেন, যা ব্রুট ফোর্স আক্রমণ থেকে সুরক্ষা দেয়।
CherryPy তে রেট লিমিটিং প্লাগইন সরাসরি বিল্ট-ইন নয়, তবে এটি tools সিস্টেমে কাস্টম টুল হিসেবে অন্তর্ভুক্ত করা যেতে পারে।
CherryPy তে Security Plugins ব্যবহার করে আপনার অ্যাপ্লিকেশনকে নিরাপদ করা যায়। Authentication, Authorization, CSRF Protection, Input Validation, এবং Rate Limiting সহ বিভিন্ন সিকিউরিটি প্লাগইন CherryPy তে ব্যবহৃত হতে পারে। এসব ফিচার নিরাপত্তা নিশ্চিত করতে এবং অ্যাপ্লিকেশনকে ম্যালিশিয়াস অ্যাক্টিভিটি থেকে রক্ষা করতে সহায়তা করে। CherryPy তে সিকিউরিটি প্লাগইন গুলি অ্যাপ্লিকেশন ডেভেলপমেন্ট এবং পরিচালনায় অত্যন্ত কার্যকরী এবং নিরাপদ উপায়।
Read more