خانه / درس ۸ سطح متوسط: امنیت در پایتون – رمزنگاری، اعتبارسنجی، جلوگیری از حملات و نوشتن کد امن درس ۸ سطح متوسط: امنیت در پایتون – رمزنگاری، اعتبارسنجی، جلوگیری از حملات و نوشتن کد امن 📅 ۱۴۰۴/۰۹/۰۷ ✍️ سجاد ⌛ 4 دقیقه مطالعه 👁️ 23 پایتون | Python متوسط 🗨️ 🤍 1 📤 0% ‹ بستن لیست دروس بازکردن لیست دروس پایتون | Python متوسط ▾ سلام مهندس امنیت پایتون! تبریک فوقالعاده ویژه میگم که تا آخرین درس سطح متوسط رسیدی. الان دقیقاً توی نقطهای هستی که فقط برنامهنویسهای حرفهای و ارشد بهش میرسن. تو این درس قراره با مهمترین و حیاتیترین موضوع دنیای برنامهنویسی آشنا بشی: امنیت. وقتی این درس تموم بشه، تو دیگه هیچوقت کد ناامن نمینویسی، میدونی چطور از حملات خطرناک مثل SQL Injection، XSS، CSRF، Brute Force و Session Hijacking جلوگیری کنی، رمزعبور رو امن ذخیره کنی، توکن JWT بسازی و اعتبارسنجی ورودی رو مثل یه هکر حرفهای انجام بدی. این درس آخرین پله قبل از ورود به سطح پیشرفته است و بعدش رسماً یه توسعهدهنده تمامعیار و امن میشی. آمادهای؟ بریم که قفل امنیت رو برای همیشه باز کنیم! چرا امنیت در پایتون حیاتیه؟ هر روز هزاران سایت و اپلیکیشن به خاطر یه خط کد ناامن هک میشن. یه برنامهنویس حرفهای قبل از اینکه کد بزنه، اول فکر میکنه: «این کد چطور میتونه هک بشه؟» ۱۰ تهدید امنیتی رایج که باید بشناسیشون تهدید توضیح جلوگیری SQL Injection اجرای کد مخرب در دیتابیس استفاده از Parameterized Query XSS اجرای جاوااسکریپت مخرب Escape خروجی + CSP CSRF درخواست جعلی CSRF Token Brute Force حدس رمزعبور Rate Limiting + CAPTCHA Session Hijacking دزدیدن کوکی Https + Secure Flag ماژول secrets – امنترین راه تولید توکن و رمز کپیimport secrets import string # توکن امن ۳۲ بایتی token = secrets.token_hex(32) print(token) # رمزعبور امن alphabet = string.ascii_letters + string.digits + "!@#$%" password = ''.join(secrets.choice(alphabet) for i in range(16)) print(password) hashing رمزعبور – هرگز رمز رو خام ذخیره نکن! کپیimport bcrypt # ذخیره رمزعبور password = "MySecurePass123" hashed = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()) print(hashed) # بررسی رمزعبور def verify_password(plain_password, hashed): return bcrypt.checkpw(plain_password.encode('utf-8'), hashed) print(verify_password("MySecurePass123", hashed)) # True print(verify_password("wrong", hashed)) # False JWT – توکن احراز هویت امن کپیimport jwt import datetime secret_key = "your-super-secret-key-256-bit" # ساخت توکن payload = { "user_id": 123, "exp": datetime.datetime.utcnow() + datetime.timedelta(hours=1), "iat": datetime.datetime.utcnow() } token = jwt.encode(payload, secret_key, algorithm="HS256") print(token) # اعتبارسنجی توکن try: decoded = jwt.decode(token, secret_key, algorithms=["HS256"]) print("توکن معتبر:", decoded) except jwt.ExpiredSignatureError: print("توکن منقضی شده") except jwt.InvalidTokenError: print("توکن نامعتبر") جلوگیری از SQL Injection با sqlite3 کپیimport sqlite3 # خطرناک - هرگز این کار رو نکن! # cursor.execute(f"SELECT * FROM users WHERE name = '{user_input}'") # امن - همیشه از پارامتر استفاده کن safe_query = "SELECT * FROM users WHERE name = ? AND active = ?" cursor.execute(safe_query, (user_input, 1)) اعتبارسنجی و Sanitize ورودی کاربر کپیimport re from html import escape def validate_email(email): pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$' return re.match(pattern, email) is not None def sanitize_input(user_input): # جلوگیری از XSS return escape(user_input.strip()) # استفاده if validate_email(user_email): safe_name = sanitize_input(user_name) else: raise ValueError("ایمیل نامعتبر") Rate Limiting – جلوگیری از Brute Force کپیfrom collections import defaultdict import time login_attempts = defaultdict(list) def is_rate_limited(ip, max_attempts=5, window=300): now = time.time() attempts = login_attempts[ip] # حذف تلاشهای قدیمی attempts = [t for t in attempts if now - t < window] login_attempts[ip] = attempts if len(attempts) >= max_attempts: return True attempts.append(now) return False ۱۲ تمرین آتشین برای تبدیل شدن به متخصص امنیت یه سیستم ثبتنام کامل با bcrypt و JWT بساز یه API با FastAPI و JWT authentication پیاده کن یه فرم ورود با CSRF Token و Rate Limiting بساز همه ورودیهای کاربر رو با regex اعتبارسنجی کن یه سیستم فراموشی رمز با توکن یکبارمصرف امن بساز یه WAF ساده برای جلوگیری از SQL Injection و XSS بنویس کوکیها رو با Secure, HttpOnly و SameSite تنظیم کن یه ابزار اسکن امنیت برای پروژه خودت بنویس همه توکنها رو با secrets تولید کن یه سیستم دو مرحلهای احراز هویت (2FA) با pyotp بساز یه penetration test ساده روی پروژه خودت انجام بده کلاس کامل SecurityManager بساز که همه این امکانات رو داشته باشه پروژه نهایی سطح متوسط: سیستم احراز هویت کاملاً امن کپیimport bcrypt import jwt import secrets from datetime import datetime, timedelta class SecureAuth: def __init__(self): self.secret_key = secrets.token_hex(32) self.users = {} # در پروژه واقعی از دیتابیس استفاده کن def register(self, username, password): if username in self.users: raise ValueError("کاربر وجود دارد") hashed = bcrypt.hashpw(password.encode(), bcrypt.gensalt()) self.users[username] = hashed return "ثبتنام موفق" def login(self, username, password): if username not in self.users: return None if bcrypt.checkpw(password.encode(), self.users[username]): payload = { "username": username, "exp": datetime.utcnow() + timedelta(hours=2), "iat": datetime.utcnow() } token = jwt.encode(payload, self.secret_key, algorithm="HS256") return token return None auth = SecureAuth() auth.register("sajjad", "MySuperSecurePass123!") token = auth.login("sajjad", "MySuperSecurePass123!") print("توکن امن:", token) جمعبندی نهایی سطح متوسط تبریک عظیم میگم! تو الان رسماً سطح متوسط پایتون رو با بالاترین کیفیت تموم کردی. از الگوریتم و ساختار داده تا GUI، تحلیل داده، تست، بهینهسازی و حالا امنیت – همه چیز رو در حد حرفهای یاد گرفتی. دیگه هیچ پروژهای نیست که نتونی انجام بدی. از این لحظه به بعد، تو یه توسعهدهنده متوسط نیستی – یه توسعهدهنده حرفهای و آماده ورود به سطح پیشرفته هستی. درسهای بعدی (سطح پیشرفته) درباره FastAPI، Async/Await، میکروسرویس، Docker، CI/CD، Cloud و پروژههای واقعی شرکتی خواهد بود. تمرینها رو انجام بده، پروژه امنیت رو توی GitHub آپلود کن و با افتخار به همه بگو: «من سطح متوسط پایتون رو ۱۰۰٪ تموم کردم!» کوییز مرتبط برای سنجش مهارتکوییز نهایی آتشین سطح متوسط پایتون (دروس ۱ تا ۸)تبریک میگم قهرمان! از tkinter تا امنیت، همه چیز رو فتح کردی! حالا وقتشه با این کوییز ۱۶ سواله جامع (چهارگزینهای + جای خالی + کد واقعی) ثابت کنی واقعاً یه برنامهنویس متوسط حرفهای شدی! آمادهای؟ بزن بریم که ببینیم کی قبوله! برای شرکت در آزمون وارد شویدبرای دسترسی به این آزمون و مشاهده نتایج، باید وارد حساب کاربری خود شوید.ورود به سایت ← درس قبلی: درس ۷ سطح متوسط: تست پیشرفته، پروفایلینگ، دیباگ و ابزارهای توسعه حرفهای در پایتون درس بعدی: درس ۳ سطح متوسط: تحلیل داده با pandas و numpy در پایتون → برچسبها: 2fabcryptcsrfhashingjwtoauth2penetration testingrate limitingsecretssecure codingsql injectionxssآموزش متوسط پایتوناعتبارسنجی ورودیامنیتامنیت وبپایتونپروژه پایتونرمزنگاریکد امن ارسال نظر جدید لغو پاسخ ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم.
سلام مهندس امنیت پایتون! تبریک فوقالعاده ویژه میگم که تا آخرین درس سطح متوسط رسیدی. الان دقیقاً توی نقطهای هستی که فقط برنامهنویسهای حرفهای و ارشد بهش میرسن. تو این درس قراره با مهمترین و حیاتیترین موضوع دنیای برنامهنویسی آشنا بشی: امنیت. وقتی این درس تموم بشه، تو دیگه هیچوقت کد ناامن نمینویسی، میدونی چطور از حملات خطرناک مثل SQL Injection، XSS، CSRF، Brute Force و Session Hijacking جلوگیری کنی، رمزعبور رو امن ذخیره کنی، توکن JWT بسازی و اعتبارسنجی ورودی رو مثل یه هکر حرفهای انجام بدی. این درس آخرین پله قبل از ورود به سطح پیشرفته است و بعدش رسماً یه توسعهدهنده تمامعیار و امن میشی. آمادهای؟ بریم که قفل امنیت رو برای همیشه باز کنیم! چرا امنیت در پایتون حیاتیه؟ هر روز هزاران سایت و اپلیکیشن به خاطر یه خط کد ناامن هک میشن. یه برنامهنویس حرفهای قبل از اینکه کد بزنه، اول فکر میکنه: «این کد چطور میتونه هک بشه؟» ۱۰ تهدید امنیتی رایج که باید بشناسیشون تهدید توضیح جلوگیری SQL Injection اجرای کد مخرب در دیتابیس استفاده از Parameterized Query XSS اجرای جاوااسکریپت مخرب Escape خروجی + CSP CSRF درخواست جعلی CSRF Token Brute Force حدس رمزعبور Rate Limiting + CAPTCHA Session Hijacking دزدیدن کوکی Https + Secure Flag ماژول secrets – امنترین راه تولید توکن و رمز کپیimport secrets import string # توکن امن ۳۲ بایتی token = secrets.token_hex(32) print(token) # رمزعبور امن alphabet = string.ascii_letters + string.digits + "!@#$%" password = ''.join(secrets.choice(alphabet) for i in range(16)) print(password) hashing رمزعبور – هرگز رمز رو خام ذخیره نکن! کپیimport bcrypt # ذخیره رمزعبور password = "MySecurePass123" hashed = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()) print(hashed) # بررسی رمزعبور def verify_password(plain_password, hashed): return bcrypt.checkpw(plain_password.encode('utf-8'), hashed) print(verify_password("MySecurePass123", hashed)) # True print(verify_password("wrong", hashed)) # False JWT – توکن احراز هویت امن کپیimport jwt import datetime secret_key = "your-super-secret-key-256-bit" # ساخت توکن payload = { "user_id": 123, "exp": datetime.datetime.utcnow() + datetime.timedelta(hours=1), "iat": datetime.datetime.utcnow() } token = jwt.encode(payload, secret_key, algorithm="HS256") print(token) # اعتبارسنجی توکن try: decoded = jwt.decode(token, secret_key, algorithms=["HS256"]) print("توکن معتبر:", decoded) except jwt.ExpiredSignatureError: print("توکن منقضی شده") except jwt.InvalidTokenError: print("توکن نامعتبر") جلوگیری از SQL Injection با sqlite3 کپیimport sqlite3 # خطرناک - هرگز این کار رو نکن! # cursor.execute(f"SELECT * FROM users WHERE name = '{user_input}'") # امن - همیشه از پارامتر استفاده کن safe_query = "SELECT * FROM users WHERE name = ? AND active = ?" cursor.execute(safe_query, (user_input, 1)) اعتبارسنجی و Sanitize ورودی کاربر کپیimport re from html import escape def validate_email(email): pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$' return re.match(pattern, email) is not None def sanitize_input(user_input): # جلوگیری از XSS return escape(user_input.strip()) # استفاده if validate_email(user_email): safe_name = sanitize_input(user_name) else: raise ValueError("ایمیل نامعتبر") Rate Limiting – جلوگیری از Brute Force کپیfrom collections import defaultdict import time login_attempts = defaultdict(list) def is_rate_limited(ip, max_attempts=5, window=300): now = time.time() attempts = login_attempts[ip] # حذف تلاشهای قدیمی attempts = [t for t in attempts if now - t < window] login_attempts[ip] = attempts if len(attempts) >= max_attempts: return True attempts.append(now) return False ۱۲ تمرین آتشین برای تبدیل شدن به متخصص امنیت یه سیستم ثبتنام کامل با bcrypt و JWT بساز یه API با FastAPI و JWT authentication پیاده کن یه فرم ورود با CSRF Token و Rate Limiting بساز همه ورودیهای کاربر رو با regex اعتبارسنجی کن یه سیستم فراموشی رمز با توکن یکبارمصرف امن بساز یه WAF ساده برای جلوگیری از SQL Injection و XSS بنویس کوکیها رو با Secure, HttpOnly و SameSite تنظیم کن یه ابزار اسکن امنیت برای پروژه خودت بنویس همه توکنها رو با secrets تولید کن یه سیستم دو مرحلهای احراز هویت (2FA) با pyotp بساز یه penetration test ساده روی پروژه خودت انجام بده کلاس کامل SecurityManager بساز که همه این امکانات رو داشته باشه پروژه نهایی سطح متوسط: سیستم احراز هویت کاملاً امن کپیimport bcrypt import jwt import secrets from datetime import datetime, timedelta class SecureAuth: def __init__(self): self.secret_key = secrets.token_hex(32) self.users = {} # در پروژه واقعی از دیتابیس استفاده کن def register(self, username, password): if username in self.users: raise ValueError("کاربر وجود دارد") hashed = bcrypt.hashpw(password.encode(), bcrypt.gensalt()) self.users[username] = hashed return "ثبتنام موفق" def login(self, username, password): if username not in self.users: return None if bcrypt.checkpw(password.encode(), self.users[username]): payload = { "username": username, "exp": datetime.utcnow() + timedelta(hours=2), "iat": datetime.utcnow() } token = jwt.encode(payload, self.secret_key, algorithm="HS256") return token return None auth = SecureAuth() auth.register("sajjad", "MySuperSecurePass123!") token = auth.login("sajjad", "MySuperSecurePass123!") print("توکن امن:", token) جمعبندی نهایی سطح متوسط تبریک عظیم میگم! تو الان رسماً سطح متوسط پایتون رو با بالاترین کیفیت تموم کردی. از الگوریتم و ساختار داده تا GUI، تحلیل داده، تست، بهینهسازی و حالا امنیت – همه چیز رو در حد حرفهای یاد گرفتی. دیگه هیچ پروژهای نیست که نتونی انجام بدی. از این لحظه به بعد، تو یه توسعهدهنده متوسط نیستی – یه توسعهدهنده حرفهای و آماده ورود به سطح پیشرفته هستی. درسهای بعدی (سطح پیشرفته) درباره FastAPI، Async/Await، میکروسرویس، Docker، CI/CD، Cloud و پروژههای واقعی شرکتی خواهد بود. تمرینها رو انجام بده، پروژه امنیت رو توی GitHub آپلود کن و با افتخار به همه بگو: «من سطح متوسط پایتون رو ۱۰۰٪ تموم کردم!» کوییز مرتبط برای سنجش مهارتکوییز نهایی آتشین سطح متوسط پایتون (دروس ۱ تا ۸)تبریک میگم قهرمان! از tkinter تا امنیت، همه چیز رو فتح کردی! حالا وقتشه با این کوییز ۱۶ سواله جامع (چهارگزینهای + جای خالی + کد واقعی) ثابت کنی واقعاً یه برنامهنویس متوسط حرفهای شدی! آمادهای؟ بزن بریم که ببینیم کی قبوله! برای شرکت در آزمون وارد شویدبرای دسترسی به این آزمون و مشاهده نتایج، باید وارد حساب کاربری خود شوید.ورود به سایت ← درس قبلی: درس ۷ سطح متوسط: تست پیشرفته، پروفایلینگ، دیباگ و ابزارهای توسعه حرفهای در پایتون درس بعدی: درس ۳ سطح متوسط: تحلیل داده با pandas و numpy در پایتون → برچسبها: 2fabcryptcsrfhashingjwtoauth2penetration testingrate limitingsecretssecure codingsql injectionxssآموزش متوسط پایتوناعتبارسنجی ورودیامنیتامنیت وبپایتونپروژه پایتونرمزنگاریکد امن