mirnasab82 24 گزارش دادن ارسال شده در مهر 95 با سلام خدمت تمامی دوستان گرامی این تایپک رو زدم واسه بعضی از دوستان که کارشون امنیت وب سایت ها هست امید وار مفید باشه. دوستانی که استفاده کردن تشکر کنن. 1 1 واکنش ها : RT3N و johnjones به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
mirnasab82 24 گزارش دادن ارسال شده در مهر 95 سلام روزتون بخیر خب بی مقدمه بریم سراغ اموزش:آموزش بستن باگ SQL injection در PHP :اول بپردازیم به این که این باک ها چجوری ایجاد میشن .ببینید در بحث واکشی از پایگاه داده ما از طریق دستورات PHP یه Query جاری میکنیم تا اطلاعات مارو از دیتابیس بخونه برای مثال : SELECT * FROM content WHERE title='ParnianData' در این کوئری ما درخواست کردیم تا هرچی ستون هست رو جایی که تایتل ما ParnianData هست انتخاب کن .خوب اگه ورودی های ما امن نباشه هکر میتونه یه سری دستورات دیگه به این کوئری ما تزریق کنه . برای مثال : SELECT * FROM content WHERE title=$_GET['title'] ما خواستیم هرچیزی که در مقدار title هست جستجو بشه در حقیقت هرچیزی در آدرس بار در مقدار title هست داخل دیتابیس سرچ بشه به این صورت : localhost/post.php?title=ParnianData حالا برای خراب کردن این کوئری کافیه یدونه ' در آخر آدرس بار وارد کنیم . localhost/post.php?title=ParnianData' جالا کوئری جاری میشه : SELECT * FROM content WHERE title=$_GET['title']' و اروری نشون میده مبنی بر این که کوئری سالم نیست .و از این طریق هکر میفهمه که ورودی های ما امن نیست و میشه دستورات رو تزریق کرد .خوب حالا هکر میاد از طریق دستورات ORDER BY , Union Select تعداد ستون ها و ردیف های مارو از دیتابیس میخونه و شروع میکنه به بیرون کشیدن نام جدول هامون .و سپس کوئری مورد نظر خودش رو تزریق میکنه تا به رمز و یوزر مدیریت سایت برسه و یا محتوایی رو روی وبسایت اضافه یا کم کنه .برای جلوگیری از این نوع حملات چند تا راه داریم که یکیش امن کردن ورودی های ماست .ما میتونیم از توابع موجود زیادی در PHP برای امن کردن ورودی ها استفاده کنیم .به عنوان مثال : filter_varstr_replacemysql_real_scape_string...ما توی این جلسه قصد داریم با مورد سوم کار کنیم .برای شروع کار ما باید ورودی رو داخل یه متغیر بریزیم : $title = $_GET['title'] حالا امن کنیم : $title = mysql_real_scape_string($_GET['title']) در این صورت ورودی ما بصورت استرینگ های قابل قبول برای Mysql تعریف میشه و اگه کاراکتر غیر مجاز یا کوئری دیگه ای بخوایم جاری کنیم تبدیل میشه به یه چیز نا مفهوم .و حالا متغیر تایتل رو در کوئری مورد نظر جایگذین میکنیم : $title = mysql_real_scape_string($_GET['title'])SELECT * FROM content WHERE title='$title' به این صورت ورودی ما امن شد . خوشحال میشم در صورت بازدید از این تایپک تشکر کنید. 4 1 واکنش ها : johnjones ، DeMoN ، An0int3d و 2 نفر دیگر به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر