PDA

View Full Version : امنیت داده ها در برابر sql injection



p30online
چهارشنبه 15 آبان 1392, 23:06 عصر
دووستان یک کدی بود که اول دستور قرار می دادیم تا شخصی نتواند اطلاعات را داخل بانک تزریق کند ؟بعد باید فقط قبل از دستور insert قرار داد که اطلاعات وارد بانک ما نشود .راهنمائیم کنید ممنون می شوم!

saeidpsl
چهارشنبه 15 آبان 1392, 23:43 عصر
داش PDO رو استفاده کن از شر sql injection هم راحت میشی.
اینم (http://delgosha1.ir/ups/uploads/PDO.rar)دستورات نمونه

h.rezaee
چهارشنبه 15 آبان 1392, 23:59 عصر
سلام. برای جلو چیزی از این کار از stored procedure استفاده می کنیم. بابت غلط املایی و بی ربطی ببخشید چون با گوشی تایپ می کنم.
دوستتون هم که pdo رو گفته برای اتصال به دیتابیس هستش که یک سری امنیت رو هم بر قرار می کنه ولی وظیفه اصلی اون این هستش که خیلی راحت بشه با بانک های مختلف ارتباط برقرار کرد و هر وقت نیاز شد بانک برنامه رو از SQL به my SQL و یا به oracle و... تبدیل کنیم. موفق باشید

navid3d_69
پنج شنبه 16 آبان 1392, 08:56 صبح
آموزش کامل sql injection ـوی همین بخش هست همراه با PDO

shahriyar3
پنج شنبه 16 آبان 1392, 10:04 صبح
سلام. برای جلو چیزی از این کار از stored procedure استفاده می کنیم. بابت غلط املایی و بی ربطی ببخشید چون با گوشی تایپ می کنم.
دوستتون هم که pdo رو گفته برای اتصال به دیتابیس هستش که یک سری امنیت رو هم بر قرار می کنه ولی وظیفه اصلی اون این هستش که خیلی راحت بشه با بانک های مختلف ارتباط برقرار کرد و هر وقت نیاز شد بانک برنامه رو از SQL به my SQL و یا به oracle و... تبدیل کنیم. موفق باشید
آقا ببخشیدا ولی store procedure چه ربطی داشت به امنیت؟!!!
pdo یک دستوری (یا امکان)داره به اسم prepared statement که باعث میشه جلوی حملات sql injection گرفته بشه .
pdo قابلیت های دیگه ای مثل drive که شما هم گفتید داره ولی بازم ربط امنیت و به store procedure و اصلا متوجه نشدم!!
اگر هم چین چیزی هست بیشتر توضیح بده یه چیز جدید یاد می گیریم .

HASAN604
پنج شنبه 16 آبان 1392, 10:28 صبح
mysql_real_escape_string()

و وردوی رو 'داخل این دوتا' بذار

h.rezaee
جمعه 17 آبان 1392, 00:27 صبح
آقا ببخشیدا ولی store procedure چه ربطی داشت به امنیت؟!!!
pdo یک دستوری (یا امکان)داره به اسم prepared statement که باعث میشه جلوی حملات sql injection گرفته بشه .
pdo قابلیت های دیگه ای مثل drive که شما هم گفتید داره ولی بازم ربط امنیت و به store procedure و اصلا متوجه نشدم!!
اگر هم چین چیزی هست بیشتر توضیح بده یه چیز جدید یاد می گیریم .
دوست عزیز. ببینید SQL injection یعنی تزریق اس کیو ال 'که احتمالا می دونید' زمانی که شما از sp استفاده می کنید دیگه به هیچ عنوان به شما اجازه دادن دستورات به صورت مستقیم و از طریق url داده نمیشه!
پس به هیچ عنوان تزریق اس کیو ال از طریق url وجود ندارد.
ببینید تزریق یعنی query رو دور بزنی و اون چیزی که خودت می خوای رو وارد کنی، به عنوان مثال با بک query ساده می تونید اطلاعات جداول بانک رو بچشید بیرون!
بله همون جوری هم که شما گفتین از اون طریق عم میشه جلوش رو گرفت ولی sp هم دقیق تره و هم سرعت بهتری به دستورات میده.

smksmk
سه شنبه 21 آبان 1392, 12:40 عصر
برای هر موردی نمیشه از یک روش کلی استفاده کرد ، هر جایی بسته به نوع ورودی یک بررسی ساده لازمه مثلاً جایی که عددی باشه is_numeric یا جای دیگه mysql_real_escape_string یا اگه مهم باشه و بخوای کنترل بیشتری داشته باشی preg_match همینطور htmlspecialchars,htmlentities برای موارد مربوط به خودش . و اگه امکان استفاده از jquery و ajax هم باشه که کار راحتتره . کلاً من همیشه از preg_match استفاده میکنم .

MMSHFE
چهارشنبه 22 آبان 1392, 08:06 صبح
دوست عزیز. ببینید SQL injection یعنی تزریق اس کیو ال 'که احتمالا می دونید' زمانی که شما از sp استفاده می کنید دیگه به هیچ عنوان به شما اجازه دادن دستورات به صورت مستقیم و از طریق url داده نمیشه!
پس به هیچ عنوان تزریق اس کیو ال از طریق url وجود ندارد.
ببینید تزریق یعنی query رو دور بزنی و اون چیزی که خودت می خوای رو وارد کنی، به عنوان مثال با بک query ساده می تونید اطلاعات جداول بانک رو بچشید بیرون!
بله همون جوری هم که شما گفتین از اون طریق عم میشه جلوش رو گرفت ولی sp هم دقیق تره و هم سرعت بهتری به دستورات میده.
اونوقت یک سؤال: اگه SP شما پارامتر بگیره و پارامترها هم توسط کاربر وارد بشه، باز هم نمیشه Query رو تغییر داد؟ همیشه که نمیشه کل کوئری از قبل نوشته شده باشه. یه جاهایی بالأخره مجبوریم بر اساس ورودی کاربر، کوئری رو تغییر بدیم. حالا این کوئری میتونه توسط PHP ارسال بشه و یا اینکه مستقیماً توی MySQL و بصورت SP ساخته بشه. بهرحال وقتی ورودی کاربر توش دخیل میشه، امکان تغییرش وجود داره. بنابراین باید ورودیهای خطرناک کاربران رو خنثی کنیم.