۱- از برگه تقلب برای SQL Injection استفاده کنید
هر توسعه دهنده وب باید به خوبی با شیوه های امنیتی آشنا باشد و باید برنامه ها را با این شیوه های امنیتی درون ذهنش طراحی کند. قانون اولیه این است که هرگز به داده های دریافت شده از جای دیگر اعتماد نکنید. قانون دیگر اسکیپ (escape) داده ها قبل از ارسال به جای دیگری است. ترکیب این دو قانون برای ایجاد اصول امنیتی پایه می تواند بدین صورت ساده شوند: فیلتر ورودی، اسکیپ خروجی (FIEO).
علت اصلی حمله تزریق به پایگاه داده، اسکیپ کردن داده های خروجی است. به خصوص وقتی رخ می دهد که وجه تمایز بین قالب پرس و جو SQL و داده های استفاده شده توسط پرس و جو به دقت حفظ نمی شود. این حمله در برنامه های PHP که پرس و جوها با روش زیر ساخته می شوند، رایج است:
$query = ldquo;SELECT *
FROM users
WHERE name = lsquo;{$_GET[lsquo;namersquo;]}'rdquo;;
?>
در این حالت مقدار متغیر
$_GET[lsquo;namersquo;]
توسط کاربر، منبعی دیگر، تعیین می شود که نه فیلتر شده و نه اسکیپ.
اسکیپ شدن داده ها باعث می شود تا قالب اصلی آنها در یک متن جدید حفظ شود. تأکید بر اسکیپ داده های خروجی تذکری است برای اینکه در خارج از برنامه باید داده ها اسکیپ شده استفاده شوند چراکه در غیر این صورت ممکن است به صورت اشتباه تفسیر شوند. در مقابل آن فیلتر کردن داده ها این اطمینان را به ما می دهد که داده ها قبل از استفاده اعتبارسنجی شده اند. تأکید بر فیلتر ورودی بیانگر این است که منبع داده های خارج از برنامه باید فیلتر شود زیرا نمی توان به آنها اعتماد کرد.
با فرض اینکه از MySQL استفاده می کنیم، می توان آسیب پذیری حمله تزریق به SQL را با اسکیپ اسم توسط تابع ()mysql_real_escape_string کاهش داد. حتی اگر اسم فیلتر هم شود یک لایه امنیتی بیشتری به وجود می آید. (اجرای چندین لایه امنیتی rdquo; دفاع در عمقrdquo; نامیده می شود و یک روش امنیتی بسیار خوب است.) در مثال زیر برای افرایش شفافیت کد از قراردادهای نامگذاری استفاده شده و در آن فیلتر ورودی و اسکیپ خروجی داده ها نشان داده می شود:
// Initialize arrays for filtered and escaped data, respectively.
$clean = array();
$sql = array();
// Filter the name. (For simplicity, we require alphabetic names.)
if (ctype_alpha($_GET[lsquo;namersquo;])) {
$clean[lsquo;namersquo;] = $_GET[lsquo;namersquo;];
} else {
// The name is invalid. Do something here.
}
// Escape the name.
$sql[lsquo;namersquo;] = mysql_real_escape_string($clean[lsquo;namersquo;]);
// Construct the query.
$query = ldquo;SELECT *
FROM users
WHERE name = lsquo;{$sql[lsquo;namersquo;]}'rdquo;;
?>

برنامه نویسی پیشرفته در PHP

ترفند بسیار کاربردی نرم افزار تری دی مکس

چگونه برای خواندن زبان برنامه ریزی کنیم؟

بهترین روش برنامه ریزی برای خواندن آزمون آیلتس

۱۴ تکنیک جهت کار کردن راحت تر با نرم افزار کورل دراو

های ,داده ,برنامه ,پرس ,امنیتی ,اسکیپ ,داده های ,پرس و ,و جو ,شیوه های ,های امنیتی

مشخصات

آخرین ارسال ها

آخرین جستجو ها


chicbihostwin kavirnegintc holoocenter7 مژگان نوشت دانلود رایگان فیلم های روز دنیا با لینک مستقیم . حوزه علمیه خواهران فاطمه الزهراء (سلام الله علیها) مراغه novintrayaneh kavirplusno music-gn