امنیت و رمزنگاری در پایتون

ایجاد شده توسط دکتر مصطفی جلیلی در آموزش برنامه نویسی پایتون 21 مارس 2025
اشتراک گذاری

وقتی صحبت از توسعه نرم‌افزار میشه، یکی از مهم‌ترین موضوعات، امنیت هست. مخصوصاً در پایتون که برای پروژه‌های مختلفی مثل اپلیکیشن‌های وب، اسکریپت‌های خودکارسازی، و حتی بلاکچین استفاده می‌شه. توی این آموزش می‌خوایم با هم سه بخش مهم از امنیت در پایتون رو بررسی کنیم: هشینگ و رمزنگاری، مدیریت کلیدهای رمزنگاری، و ایمن‌سازی کلی برنامه‌های پایتون.


مبانی هشینگ و رمزنگاری در پایتون (hashlib, bcrypt)


هشینگ با hashlib


هشینگ فرآیندی هست که داده‌ها رو به یک رشته‌ی ثابت و غیرقابل برگشت تبدیل می‌کنه. توی پایتون، کتابخونه hashlib برای این کار عالیه.


مثال ساده:


import hashlib
password = "my_secure_password"
hashed = hashlib.sha256(password.encode()).hexdigest()
print(hashed)

اینجا، رمز عبور ما با الگوریتم SHA-256 هش شده. توجه کن که هشینگ یکطرفه است، یعنی نمیشه برش گردوند به رمز اصلی.


رمزنگاری پسورد با bcrypt


برای ذخیره امن پسوردها، بهتره از bcrypt استفاده کنیم، چون سالت هم به هش اضافه می‌کنه و امنیت رو چند برابر می‌کنه.


import bcrypt
password = b"my_secure_password"
# ساخت هش به همراه salt
hashed = bcrypt.hashpw(password, bcrypt.gensalt())
print(hashed)
# بررسی صحت رمز عبور
if bcrypt.checkpw(password, hashed):
print("Password is correct!")
else:
print("Invalid password!")

مدیریت کلیدهای رمزنگاری (کتابخانه cryptography)


زمانی که بخوای اطلاعات حساس رو رمزنگاری و بعداً رمزگشایی کنی، می‌تونی از cryptography استفاده کنی. این کتابخونه حرفه‌ای و امنه.


 رمزنگاری و رمزگشایی متنی ساده:


from cryptography.fernet import Fernet
# تولید کلید جدید
key = Fernet.generate_key()
cipher = Fernet(key)
# رمزنگاری
message = b"Hello, secure world!"
token = cipher.encrypt(message)
print("Encrypted:", token)
# رمزگشایی
decrypted = cipher.decrypt(token)
print("Decrypted:", decrypted.decode())

نکته: کلید تولید شده رو باید در جای امنی ذخیره کنی، مثل محیط‌های ایمن یا فایل‌های کانفیگ رمزنگاری شده.

ایمن‌سازی برنامه‌های پایتون


حالا که با مبانی رمزنگاری آشنا شدیم، چند نکته برای ایمن‌سازی کلی برنامه‌های پایتون:


  • از ذخیره پسورد در کد خودداری کن.
    تنظیمات حساس رو در متغیرهای محیطی (env) یا فایل‌های امن نگه دار.
    ورودی‌ها رو اعتبارسنجی کن تا از حملات تزریق (SQL Injection یا Code Injection) جلوگیری کنی.
    در صورت استفاده از وب‌فریمورک‌ها مثل Flask یا Django، از قابلیت‌های امنیتی مثل CSRF Token، CORS و HTTPS استفاده کن.

نتیجه گیری 

رمزنگاری و امنیت فقط برای اپلیکیشن‌های بزرگ نیست، حتی برای اسکریپت‌های ساده هم لازمه. همیشه امنیت رو از ابتدا توی پروژه‌هات لحاظ کن تا بعداً به مشکل برنخوری.

نظرات (0)

اشتراک گذاری

این پست را با دیگران به اشتراک بگذارید

تنظیمات GDPR

When you visit any of our websites, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and manage your preferences. Please note, that blocking some types of cookies may impact your experience of the site and the services we are able to offer.