Kiya ارسال شده در April 13 اشتراک گذاری ارسال شده در April 13 (ویرایش شده) درود خدمت دوستان گرامی امروز تصمیم گرفتم بعد از مدتی طولانی یکم فعالیت توی انجمن داشته باشم خب همونطور که از عنوان تاپیک مشخصه قراره دربارهی SQL Injection صحبت کنیم (فکر کنم دوستان دربارهی این موضوع تاپیک ایجاد نکرده باشن) 1. SQL injection چی هست؟ همونطور که از اسمش مشخصه تزریق SQL یک نوع حمله از طریق آسیب پذیری های امینیتی در وب اپلیکیشن ها هستش. این آسیب پذیری ها به کاربر اجازه میدن که در عملکرد کوئری های وب اپلیکیشن ما اختلال ایجاد کنند یا به دیتابیس ما کوئری دلخواه خودشون رو بفرستن. 2. چه زمانی SQL Injection اتفاق میوفته؟ وقتی ما فرم هایی که در سایتمون داریم رو اعتبار سنجی نکنیم و درخواست های کوئری سایتمون رو ایمن سازی نکنیم، کاربر و یا فرد مهاجم میتونه فرم های ورود و دیگر فرم های سایت مارو دور بزنه و به اطلاعات دیتابیس ما دسترسی پیدا کنه و حتی اونارو ویرایش و یا حذف بکنه! 3. بررسی کوئری های آسیب پذیر به طور مثال این کوئری یک کوئری آسیب پذیر هست: query = "SELECT * FROM users WHERE username = '" . $_POST['username'] . "'"; خب حالا چرا آسیب پذیره؟ ما مقدار وارد شده کاربر در فرم رو به صورت مستقیم و بدون اعتبار سنجی یا ایمن سازی در کوئری قرار دادیم خب حالا من میام و در بخش نام کاربری این مقدار رو وارد میکنم: ' OR '1'='1 حالا شاید بگید که چی میشه اگه من نام کاربریم این باشه؟ در این صورت کوئری ارسال شده به این شکل میشه: SELECT * FROM users WHERE username = '' OR '1'='1'; و این کوئری همیشه جواب مثبت (true) رو برمیگردونه حالا چطوری از این استفاده میکنن که وارد بشن یا ورود رو دور بزنن؟ فرد مهاجم در دنبالهی اون نام کاربری میاد و -- رو قرار میده (دنباله کوئری رو کامنت میکنه و به بخش وریفای پسوورد نمیرسه) و سعی میکنه بدون داشتن پسوورد وارد سایت بشه یعنی کوئری نهایی ما به این شکل میشه: SELECT * FROM users WHERE username = '' OR 1=1 -- ' AND password = '1234'; هرچند ممکنه در بسیاری از مواقع این روش کاری انجام نده! اما خب احتمال کار کردنش صفر هم نیست. حتی فرد میتونه قبل از بخش کامنت و بعد از 1=1 هر کوئری که میخواد رو ارسال کنه! مثلا کل دیتابیس رو پاک کنه 4. انواع SQL Injection این تزریق انواع مختلفی داره که اینجا کامل توضیح نمیدیم و فقط به انواعش اشاره میکنم که in-band, out-of-band و blind هستن. 5. چطوری جلوگیری کنیم؟ اول از همه با اعتبارسنجی فرم ها. یعنی چی؟ یعنی فرم هارو چک کنیم که مقادیری که میخوایم رو وارد کرده باشن و نه کاراکتر های بی ربط راه دوم استفاده از کوئری های پارامتری شده هست (Prepared Statements) که میتونیم از PHP PDO استفاده کنیم: $stmt = $db->prepare("SELECT * FROM users WHERE username = ?"); $stmt->execute([$username]); توی این روش مستقیما کوئری رو ارسال نمیکنیم. بلکه ابتدا مقدار ارسالی رو با یک Placeholder پر میکنیم (؟) و سپس مقادیر ارسالی رو جایگذاری میکنیم. توی این روش کاربر حتی اگر دستور کوئری ارسال کنه، به عنوان یک Data با اون رفتار میشه. یعنی برخلاف مثال قبلی، دستور کوئری به این شکل میشه: SELECT * FROM users WHERE username = ' ' OR 1=1 -- '; این یعنی اینکه دقیقا به دنبال مقداری تحت عنوان ' OR '1'='1 میگرده و به عنوان دستور تفسیرش نمیکنه. راه حل های دیگه ای هم مثل استفاده از برخی فریم ورک ها که خودشون کوئری رو ایمن سازی میکنن و برخی راه حل های دیگه هم وجود داره که اینجا کاری باهاشون نداشتیم. امیدوارم این مطلب براتون مفید بوده باشه. سوالی نظری بود درخدمتم❤️ ویرایش شده April 13 توسط Kiya Some corrections 2 𝐍𝐂 لینک به دیدگاه https://forum.arsacia.ir/topic/112946-sql-injection/ به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری...
Integer ارسال شده در April 13 اشتراک گذاری ارسال شده در April 13 درود بر شما کیا جان ❤️ خیلی ممنونم از تاپیک مفیدتون و ممنون بابته وقتی که گذاشتید ❤️ اگر تمایل دارید و بلد هم هستید خوشجال میشیم تاپیک NoSQL-Injection هم بزارید ❤️ چون بنده خیلی دنبالش گشتم اما هیچ جایی پیدا نکردم یه آموزش کاملش رو و اینکه، امیدوارم مطالب بیشتری از شما ببینیم ❤️ ما که داریم به شما درس پس میدیم عمو ❤️ Just Programming لینک به دیدگاه https://forum.arsacia.ir/topic/112946-sql-injection/#findComment-1174011 به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری...
Kiya ارسال شده در April 13 سازنده اشتراک گذاری ارسال شده در April 13 ۱ ساعت قبل، Integer گفته است: درود بر شما کیا جان ❤️ خیلی ممنونم از تاپیک مفیدتون و ممنون بابته وقتی که گذاشتید ❤️ اگر تمایل دارید و بلد هم هستید خوشجال میشیم تاپیک NoSQL-Injection هم بزارید ❤️ چون بنده خیلی دنبالش گشتم اما هیچ جایی پیدا نکردم یه آموزش کاملش رو و اینکه، امیدوارم مطالب بیشتری از شما ببینیم ❤️ ما که داریم به شما درس پس میدیم عمو ❤️ درود جواد جان مرسی از لطفت❤️ اطلاعاتم هرچند ممکنه ناقص باشه ولی هرچیزی که بلد باشم رو چشم به اشتراک میزارم 𝐍𝐂 لینک به دیدگاه https://forum.arsacia.ir/topic/112946-sql-injection/#findComment-1174094 به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری...
Integer ارسال شده در April 13 اشتراک گذاری ارسال شده در April 13 39 دقیقه قبل، Kiya گفته است: درود جواد جان مرسی از لطفت❤️ اطلاعاتم هرچند ممکنه ناقص باشه ولی هرچیزی که بلد باشم رو چشم به اشتراک میزارم ای بابا عمو این چه حرفیه دیگه ما داریم به شما درس پس میدیم عمو (گلب) 1 Just Programming لینک به دیدگاه https://forum.arsacia.ir/topic/112946-sql-injection/#findComment-1174153 به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری...
Bogart ارسال شده در April 18 اشتراک گذاری ارسال شده در April 18 سلام هرچند که زیاد در مورد SQL نمیدونم ولی مطلب مفید و جالبی بود ممنون بابت اطلاعاتت ❤️ 1 ❤️ من از هرچی گذشتم به عشق تو رسیدم, چه نامه عشقی تو چشمای تو دیدم ❤️ لینک به دیدگاه https://forum.arsacia.ir/topic/112946-sql-injection/#findComment-1183576 به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری...
EzraeeI ارسال شده در April 23 اشتراک گذاری ارسال شده در April 23 مرسی از شما @Kiya جان بابت وقتی که گذاشتید خسته نباشی 💙 وقتی میرسی به قدرت و اون بالا ها میشینی مراقب رفتارت با آدما باش یه روزی برمیگردی پایین همون ادم هارو میبینی My BORO: لینک به دیدگاه https://forum.arsacia.ir/topic/112946-sql-injection/#findComment-1193012 به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری...
Kiya ارسال شده در April 23 سازنده اشتراک گذاری ارسال شده در April 23 7 ساعت قبل، EzraeeI گفته است: مرسی از شما @Kiya جان بابت وقتی که گذاشتید خسته نباشی 💙 ❤️ 𝐍𝐂 لینک به دیدگاه https://forum.arsacia.ir/topic/112946-sql-injection/#findComment-1193890 به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری...
EzraeeI ارسال شده در April 29 اشتراک گذاری ارسال شده در April 29 مفیدبود ممنونم کیا جان ❤️ وقتی میرسی به قدرت و اون بالا ها میشینی مراقب رفتارت با آدما باش یه روزی برمیگردی پایین همون ادم هارو میبینی My BORO: لینک به دیدگاه https://forum.arsacia.ir/topic/112946-sql-injection/#findComment-1203679 به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری...
ارسالهای توصیه شده
برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید
برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید
ایجاد یک حساب کاربری
برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است!
ثبت نام یک حساب کاربری جدیدورود به حساب کاربری
دارای حساب کاربری هستید؟ از اینجا وارد شوید
ورود به حساب کاربری