Flask-এ Password Hashing নিরাপত্তার একটি গুরুত্বপূর্ণ অংশ, কারণ সোজা পাসওয়ার্ড স্টোর করার মাধ্যমে অ্যাপ্লিকেশন নিরাপত্তাহীন হয়ে পড়তে পারে। পাসওয়ার্ড হ্যাশিংয়ের মাধ্যমে আপনি পাসওয়ার্ড নিরাপদে স্টোর করতে পারেন, যাতে কোনোভাবেই সরাসরি পাসওয়ার্ড অ্যাক্সেস করা না যায়। Flask-Bcrypt একটি জনপ্রিয় এক্সটেনশন যা Flask অ্যাপ্লিকেশনে পাসওয়ার্ড হ্যাশিং এবং সল্টিং সহজভাবে ইমপ্লিমেন্ট করার জন্য ব্যবহৃত হয়।
Flask-Bcrypt কি?
Flask-Bcrypt হল একটি এক্সটেনশন যা bcrypt প্যাকেজের মাধ্যমে পাসওয়ার্ড হ্যাশিং এবং সল্টিং সরবরাহ করে। এটি নিরাপদ পাসওয়ার্ড স্টোরেজের জন্য একটি শক্তিশালী এবং জনপ্রিয় উপায়।
১. Flask-Bcrypt ইনস্টলেশন
প্রথমে, আপনাকে Flask-Bcrypt ইনস্টল করতে হবে:
pip install flask-bcrypt
২. Flask-Bcrypt সেটআপ এবং কনফিগারেশন
Flask অ্যাপ্লিকেশনে Flask-Bcrypt সেটআপ করতে, প্রথমে Bcrypt ক্লাসটি ইনিশিয়ালাইজ করতে হবে এবং তারপর এটি অ্যাপ্লিকেশনে যোগ করতে হবে।
উদাহরণ:
from flask import Flask, request, jsonify
from flask_bcrypt import Bcrypt
app = Flask(__name__)
bcrypt = Bcrypt(app) # Bcrypt সেটআপ করা
# Dummy user data (In-memory database)
users = {}
@app.route("/register", methods=["POST"])
def register():
data = request.get_json()
username = data['username']
password = data['password']
# পাসওয়ার্ড হ্যাশিং
hashed_password = bcrypt.generate_password_hash(password).decode('utf-8')
# ডাটাবেসে (এখানে ইন-মেমরি ডাটাবেস ব্যবহার করা হয়েছে)
users[username] = hashed_password
return jsonify({"message": "User registered successfully!"}), 201
@app.route("/login", methods=["POST"])
def login():
data = request.get_json()
username = data['username']
password = data['password']
if username not in users:
return jsonify({"message": "User not found!"}), 404
# পাসওয়ার্ড চেক করা
hashed_password = users[username]
if bcrypt.check_password_hash(hashed_password, password):
return jsonify({"message": "Login successful!"}), 200
else:
return jsonify({"message": "Invalid password!"}), 400
if __name__ == "__main__":
app.run(debug=True)
এখানে:
bcrypt.generate_password_hash(password): এটি পাসওয়ার্ড হ্যাশ করে এবং একটি সল্টও যুক্ত করে।bcrypt.check_password_hash(hashed_password, password): এটি হ্যাশ করা পাসওয়ার্ডের সাথে ইনপুট পাসওয়ার্ড মেলানোর জন্য ব্যবহৃত হয়।
রেজিস্ট্রেশন পদ্ধতি:
- ব্যবহারকারী
POST /registerরিকোয়েস্ট পাঠালে তার পাসওয়ার্ড হ্যাশ করেusersডাটাবেসে (এখানে ইন-মেমরি ডাটাবেস) স্টোর করা হবে।
লগইন পদ্ধতি:
- লগইন করার সময়, ব্যবহারকারী
POST /loginরিকোয়েস্ট পাঠালে ইনপুট পাসওয়ার্ডটির সাথে হ্যাশ করা পাসওয়ার্ড মিলিয়ে চেক করা হবে। যদি পাসওয়ার্ড মিল থাকে, তাহলে ব্যবহারকারী লগইন সফল হবে।
৩. Password Hashing এবং Checking Example
Password Hashing:
পাসওয়ার্ড হ্যাশ করার জন্য Flask-Bcrypt-এর generate_password_hash() ফাংশন ব্যবহৃত হয়।
hashed_pw = bcrypt.generate_password_hash('mysecretpassword').decode('utf-8')
print(hashed_pw)
এটি পাসওয়ার্ডটির একটি সল্টযুক্ত হ্যাশ তৈরি করবে, যা সহজেই ডিকোড করা যাবে না।
Password Checking:
যখন ব্যবহারকারী পাসওয়ার্ড ইনপুট করে, আপনি check_password_hash() ফাংশন ব্যবহার করে পাসওয়ার্ডটি সঠিক কিনা যাচাই করতে পারেন:
is_correct = bcrypt.check_password_hash(hashed_pw, 'mysecretpassword')
if is_correct:
print("Password matched!")
else:
print("Password doesn't match!")
৪. Flask-Bcrypt এবং নিরাপত্তা
Flask-Bcrypt পাসওয়ার্ড হ্যাশিংয়ের জন্য bcrypt অ্যালগোরিদম ব্যবহার করে, যা অত্যন্ত শক্তিশালী এবং সময়সাপেক্ষ প্রক্রিয়া। এটি পাসওয়ার্ডের সল্ট (salt) যোগ করে, যাতে একই পাসওয়ার্ডের জন্য ভিন্ন ভিন্ন হ্যাশ তৈরি হয়, এবং এটি স্নোপিং বা রিভার্স ইঞ্জিনিয়ারিং প্রতিরোধ করে।
পাসওয়ার্ড হ্যাশিংয়ের সুবিধা:
- নিরাপত্তা: পাসওয়ার্ড কখনোই সরাসরি ডাটাবেসে সঞ্চিত হয় না।
- সল্টিং (Salting): পাসওয়ার্ড হ্যাশ করার সময় স্বয়ংক্রিয়ভাবে সল্ট যোগ করা হয়, যা হ্যাশটিকে আরও নিরাপদ করে তোলে।
- নির্দিষ্ট হ্যাশিং অ্যালগোরিদম: bcrypt অ্যালগোরিদম শক্তিশালী এবং ধীরগতিতে কাজ করে, যা আক্রমণকারীদের জন্য শক্ত বাধা তৈরি করে।
৫. Flask-Bcrypt এর ব্যবহারিক সুবিধা
- Security Best Practices: সঠিক পাসওয়ার্ড স্টোরেজ ব্যবস্থাপনার জন্য এটি সর্বোত্তম পদ্ধতি।
- Salted Hashing: bcrypt সল্টিং এবং হ্যাশিং ব্যবহারের মাধ্যমে পাসওয়ার্ডটি সুরক্ষিত রাখে।
- Easy Integration: Flask-Bcrypt সহজেই Flask অ্যাপ্লিকেশনে ইন্টিগ্রেট করা যায় এবং নিরাপত্তা ব্যবস্থাপনা সহজ হয়।
Flask-Bcrypt একটি শক্তিশালী এবং সহজ পদ্ধতি যা Flask অ্যাপ্লিকেশনে পাসওয়ার্ড হ্যাশিং এবং সল্টিং সম্পাদন করতে ব্যবহৃত হয়। এটি ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনকে শক্তিশালী নিরাপত্তা প্রদান করতে পারেন এবং ব্যবহারকারীদের পাসওয়ার্ডকে সুরক্ষিত রাখতে পারবেন। Flask-Bcrypt পাসওয়ার্ডের জন্য নিরাপদ হ্যাশিং পদ্ধতি সরবরাহ করে, যা বর্তমানে সবচেয়ে কার্যকরী নিরাপত্তা ব্যবস্থা হিসেবে গণ্য করা হয়।
Read more