آبجی
27th April 2010, 07:18 PM
و اين مقاله مي خوام تكنيك ها و هك هايي رو بگم كه با انجام اونا سيستم مديريت محتواي ديتالايف رو حسابي در مقابل هكرها و كدهاي مخرب ايمن مي كنيد (البته نه ايمني صد درصد) . من دو قطعه كد آماده كردم كه با افزودن اونا به سيستم ديتالايف به شدت دست هكرها رو براي رخنه از طريق اين آسيب پذيري ها به ديتالايف مي بنده .
كار شما اينه كه اين دو قطعه كد رو بعد از خط <?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>");
}
}
بعد از اين كار فايل 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 دارن و اين ضريب ايمنيشون رو خيلي خيلي بالا مي بره
كار شما اينه كه اين دو قطعه كد رو بعد از خط <?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>");
}
}
بعد از اين كار فايل 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 دارن و اين ضريب ايمنيشون رو خيلي خيلي بالا مي بره