سلام خدمت همه ی دوستان عزیز.
تو این مقاله می خوام تكنیك ها و هك هایی رو بگم كه با انجام اونا سیستم مدیریت محتوای دیتالایف انجین رو حسابی در مقابل هكرها و كدهای مخرب ایمن می كنید (البته نه ایمنی صد درصد) . من دو قطعه كد آماده كردم كه با افزودن اونا به سیستم دیتالایف انجین به شدت دست هكرها رو برای رخنه از طریق این آسیب پذیری ها به دیتالایف انجین می بنده .
كار شما اینه كه این دو قطعه كد رو بعد از خط <?PHP در فایل index.php یعنی اول صفحه بزارید:
//[1] Prevent any possible XSS attacks via $_GET.
foreach ($_GET as $check_url) {
if ((eregi("<[^>]*script*\"?[^>]*>", $check_url)) || (eregi("<[^>]*object*\"?[^>]*>", $check_url)) || (eregi("<[^>]*iframe*\"?[^>]*>", $check_url)) || (eregi("<[^>]*applet*\"?[^>]*>", $check_url)) || (eregi("<[^>]*meta*\"?[^>]*>", $check_url)) || (eregi("<[^>]*style*\"?[^>]*>", $check_url)) || (eregi("<[^>]*form*\"?[^>]*>", $check_url)) || (eregi("\([^>]*\"?[^)]*\)", $check_url)) || (eregi("\"", $check_url))) {
die ("<br><br><CENTER><b><font color='#ff0000'>Dastresi Gheyre Mojaz Mibashad ... </font></b></CENTER>");
}
}
unset($check_url);
// [2] Prevent any possible XSS attacks via QUERY_STRING.
$inArray = array("'", ";", ":", "/**/", "/UNION/", "/SELECT/", "AS ", "../", "..", "%", "*", "<", ">", "^", "$"); foreach($inArray as $res) {
if(stristr($_SERVER['QUERY_STRING'], $res)) {
die("<br><br><CENTER><b><font color='#ff0000'>Dastresi Gheyre Mojaz Mibashad ... </font></b></CENTER>");
}
}
foreach ($_GET as $check_url) {
if ((eregi("<[^>]*script*\"?[^>]*>", $check_url)) || (eregi("<[^>]*object*\"?[^>]*>", $check_url)) || (eregi("<[^>]*iframe*\"?[^>]*>", $check_url)) || (eregi("<[^>]*applet*\"?[^>]*>", $check_url)) || (eregi("<[^>]*meta*\"?[^>]*>", $check_url)) || (eregi("<[^>]*style*\"?[^>]*>", $check_url)) || (eregi("<[^>]*form*\"?[^>]*>", $check_url)) || (eregi("\([^>]*\"?[^)]*\)", $check_url)) || (eregi("\"", $check_url))) {
die ("<br><br><CENTER><b><font color='#ff0000'>Dastresi Gheyre Mojaz Mibashad ... </font></b></CENTER>");
}
}
unset($check_url);
// [2] Prevent any possible XSS attacks via QUERY_STRING.
$inArray = array("'", ";", ":", "/**/", "/UNION/", "/SELECT/", "AS ", "../", "..", "%", "*", "<", ">", "^", "$"); foreach($inArray as $res) {
if(stristr($_SERVER['QUERY_STRING'], $res)) {
die("<br><br><CENTER><b><font color='#ff0000'>Dastresi Gheyre Mojaz Mibashad ... </font></b></CENTER>");
}
}
بعد از این كار فایل index.php رو ذخیره كنید.
البته شما به جای كد زیر:
die("<br><br><CENTER><b><font color='#ff0000'>Dastresi Gheyre Mojaz Mibashad ... </font></b></CENTER>");
می تونین یه صفحه ی html ایجاد كنین و در صورت تشخیص حمله ، برای نمایش عدم دسترسی هكر یا كد مخرب رو به اون صفحه راهنمائی كنید . مثلاً این كد رو به كار ببرید :
header("location: error1.html");
كار این كدها اینه كه مقادیر و داده های غیر مجاز در url رو تشخیص میده و در صورت غیر مجاز بودن این مقادیر (مقادیر و كدهائی كه هكرها برای تزریق كد یا داده در سایت یا بانك اطلاعاتی از آنها استفاده میكنند) دسترسی به كل برنامه و سایت رو برای هكر غیر ممكن می كنه و به اون غیر مجاز بودن عملش رو گوش زد می كنه .
مثلاً همین چند روز پیش بود كه من بوسیله یه XSS تونستم كنترل مدیریت سایت دیتالایف انجین 6.7 رو در دست بگیرم (روی یه نسخه كه رو لوكال هاست نصب كردم ، امتحان كردم) اما بعد از اسفاده از این كدها دیگه این كار برام مقدور نبود .
این رو هم گفته باشم كه اكثر CMS های معروف كدهای اینچنینی یا مشابهی برای پالایش URL دارن و این ضریب ایمنیشون رو خیلی خیلی بالا می بره .
موفق باشین .