اموزشگاه برتر استان البرز

امنیت در برنامه‌نویسی پایتون: محافظت در برابر SQL Injection و حملات وب

برچسب ها


ICDL آموزش برنامه نویسی آموزش برنامه نویسی به کودکان آموزش برنامه نویسی در کرج آموزش برنامه نویسی در گلشهر کرج آموزش حسابداری آموزش حسابداری بازار کار در کرج آموزش حسابداری بازارکار در کرج آموزش حسابداری در کرج آموزش حسابداری در گلشهر کرج آموزش حسابداری صنعتی آموزش حسابداری مقدماتی در کرج آموزش طلاسازی آموزش طلاسازی در کرج آموزش طلاسازی کرج آموزش فروشندگی طلا آموزش پایتون آموزش پایتون کرج آموزش کامپیوتر در کرج آموزش کامپیوتر در گلشهر کرج آموزشگاه برنامه نویسی در کرج آموزشگاه حسابداری آموزشگاه حسابداری در کرج آموزشگاه حسابداری در گلشهر کرج آموزشگاه فنی و حرفه ای آموزشگاه فنی و حرفه ای البرز آموزشگاه فنی و حرفه ای در البرز آموزشگاه فنی و حرفه ای در کرج آموزشگاه فنی و حرفه ای در گلشهر کرج آموزشگاه فنی و حرفه ای گلشهر آموزشگاه فنی و حرفه ای گلشهر کرج آموزشگاه کامپیوتر در البرز آموزشگاه کامپیوتر در کرج آموزشگاه کامپیوتر در گلشهر کرج آموزشگاه کامپیوتر و حسابداری البرز آموزشگاه کامپیوتر گلشهر کرج آموزشگاه کامیپوتر کرج حسابداری حسابداری بازار کار حسابداری بازارکار در کرج حسابداری صنعتی طراحی سایت و سئو فروشندگی طلا مدرک فنی و حرفه ای پایتون

شبکه های اجتماعی


آموزشگاه برنامه نویسی در کرج

امنیت در برنامه‌نویسی پایتون: محافظت در برابر SQL Injection و حملات وب

در دنیای توسعه وب، یک خط کد ناامن می‌تواند تمام اپلیکیشن، پایگاه داده و اطلاعات کاربران شما را در معرض خطر قرار دهد. پایتون یک زبان قدرتمند و نسبتاً امن است، اما امنیت هرگز به صورت خودکار اتفاق نمی‌افتد؛ این امنیت حاصل رعایت اصول و شیوه‌های صحیح کدنویسی توسط توسعه‌دهنده است. غفلت از این اصول می‌تواند درهای پشتی را برای مهاجمان باز بگذارد. دو مورد از رایج‌ترین و مخرب‌ترین حملات وب که هر توسعه‌دهنده پایتون باید با آن‌ها آشنا باشد، تزریق SQL (SQL Injection) و اسکریپت‌نویسی بین سایتی (Cross-Site Scripting – XSS) هستند. این مقاله یک راهنمای کاربردی برای درک این تهدیدها و مهم‌تر از آن، یادگیری روش‌های استاندارد برای دفاع در برابر آن‌ها در پایتون است.

[!] تهدید شماره یک: تزریق SQL (SQL Injection)

این حمله زمانی رخ می‌دهد که یک مهاجم بتواند کدهای SQL مخرب خود را از طریق ورودی‌های کاربر (مانند فرم لاگین یا نوار جستجو) به پایگاه داده شما «تزریق» کند.

کد آسیب‌پذیر چگونه است؟

بدترین روش برای نوشتن کوئری‌های SQL، استفاده مستقیم از فرمت‌دهی رشته (f-string یا `+`) برای چسباندن ورودی کاربر به کوئری است:

# کد بسیار خطرناک – هرگز استفاده نکنید

username = input(“Enter username: “)

query = f”SELECT * FROM users WHERE name = ‘{username}’”

cursor.execute(query)

اگر کاربر به جای نام کاربری خود، عبارت ' OR '1'='1 را وارد کند، کوئری نهایی به SELECT * FROM users WHERE name = '' OR '1'='1' تبدیل می‌شود که همیشه درست است و تمام اطلاعات کاربران را برمی‌گرداند!

[+] راه حل طلایی: کوئری‌های پارامتری (Parameterized Queries)

تنها راه صحیح و امن برای ارسال داده به پایگاه داده، استفاده از کوئری‌های پارامتری است. در این روش، شما هرگز ورودی کاربر را مستقیماً در رشته کوئری قرار نمی‌دهید. بلکه کوئری را با یک «جانگهدار» (placeholder) مانند `?` یا `%s` نوشته و داده‌ها را به عنوان یک پارامتر جداگانه به تابع `execute` ارسال می‌کنید. درایور پایگاه داده خود وظیفه ضدعفونی کردن ورودی را بر عهده می‌گیرد.

# روش امن و صحیح

username = input(“Enter username: “)

query = “SELECT * FROM users WHERE name = %s”

cursor.execute(query, (username,))

[!] تهدید خاموش: اسکریپت‌نویسی بین سایتی (XSS)

این حمله زمانی رخ می‌دهد که یک مهاجم بتواند کدهای سمت کاربر (معمولاً جاوااسکریپت) را در وب‌سایت شما تزریق کند و این کدها در مرورگر کاربران دیگر اجرا شوند. تصور کنید در بخش نظرات یک وبلاگ، مهاجم به جای یک نظر معمولی، یک تگ `