salima
11-01-2013, بتوقيت غرينيتش 03:48 PM
http://www.dzbatna.com/images/icons/iconrote.gif ط´ط±ظٹط* طھط*طµظٹظ† ظ…ط´ط±ظˆط¹ظƒ ط§ظˆ ط¨ط±ظ…ط¬ظٹطھظƒ ظ…ظ† ط«ط؛ط±ط§طھ sql injection (http://www.dzbatna.com/t1657445/)
السلام عليكم ورحمة الله
شريح تحصين مشروعك او برمجيتك من ثغرات sql injection
لديا بعض الطروق بدون استخدام اي داله وراح اطرحها لكم http://www.dzbatna.com/images/smilies/cupidarrow.gif
خطاء يقع فيه المبرمجين
مثال
رمز PHP:
<code style="white-space:nowrap"> <code> $sql=mysql_query("select * from news where id=$id ");
while($r=mysql_fetch_array($sql))
</code> </code>
لو شاهدنا هذا الجزء
رمز PHP:
<code style="white-space:nowrap"> <code> where id=$id
</code> </code>
لوجدنا بأنه يوجد ثغره sql injection
ويمكن الإستعلام من خلال متغير id بدون اي مشاكل
فالحل هنا
اضافة تنصيص مفرد
بهذا الشكل
رمز PHP:
<code style="white-space:nowrap"> <code> $sql=mysql_query("select * from news where id='$id' ");
while($r=mysql_fetch_array($sql))
</code> </code>
وطبعا هذه عن تجربة بكذا أنتهيت من الثغره بأبسط الطرق
الطريقة الثانية
عن طريق داله intval
رمز PHP:
<code style="white-space:nowrap"> <code> $id=intval($_GET['id'];
$sql=mysql_query("select * from news where id='$id' ");
while($r=mysql_fetch_array($sql))
</code> </code>
وظيفة الداله اخذ عدد رقمي فقط والغاء اي نص اضافي
وهادا راح يقبل جميع الحروف و لارقام و عند لاستعلام لا يقبل اي فاصلة ولكن يضهر بشكل عادي عند العرض
رمز PHP:
<code style="white-space:nowrap"> <code> $id=$_GET['id'];
$id2 = str_replace("'", "",$id);
$ww22=mysql_query("select * from news where id='$id2' ");
while($r=mysql_fetch_array($ww22))
{
echo $id:
}
</code> </code>
راح اشرح طريقةها
داله str_replace وظيفتها استبدال النصوص بنصوص اخرى
مثال لو كتب احدهم كلمه ممنوعه .. تتحول تلقائي الى *****
رمز PHP:
<code style="white-space:nowrap"> <code> $id= "test ray test";
echo $id2 = str_replace("ray", "***",$id);
</code> </code>
النتيجة
test *** test
رمز PHP:
<code style="white-space:nowrap"> <code> $id2 = str_replace("'", "",$id);
</code> </code>
لاحظ الكلمة الممنوعه هي '
واستخدمها فقط عند الإستعلام where
وعند العرض استخدم المتغير الغير معدل
كمان فى طريقة
اولاً دالة للحماية من الروابط الخارجية
$_GET
رمز PHP:
<code style="white-space:nowrap"> <code> function safe($num){
$num = intval($num) ;
$num = str_replace("-","",$num);
return $num;
}
</code> </code>
ودوال اثنين للحماية من الحقن الداخلي
رمز PHP:
<code style="white-space:nowrap"> <code> function safe_input($string){
$badword = array(
'select' => '&badwordseselect',
'insert' => '&badwordseinsert',
'drop' => '&badwordsedrop',
'where' => '&badwordsewhere',
'or' => '&badwordseor',
'and' => '&badwordseand',
'delete' => '&badwordsedelete',
'update' => '&badwordseupdate',
'in' => '&badwordsein',
'like' => '&badwordselike',
'set' => '&badwordseset',
'between' => '&badwordsebetween',
'join' => '&badwordsejoin',
'union' => '&badwordseunion',
'into' => '&badwordseinto',
'create' => '&badwordsecreate',
'unique' => '&badwordseunique',
'alter' => '&badwordsealter',
'from' => '&badwordsefrom'
);
foreach ($badword as $bad => $good ){
$string = str_replace($bad, $good, $string);
}
</code> </code>
الدالة اعلاه تستعمل لتنظيف السترينج قبل ادخاله الى الكويري
والدالة الثانية تستعمل في طباعة المخرجات
اي عند عرض النتائج
وهذه الدالة ايضاً للحماية
دالة Addslashes
رمز PHP:
<code style="white-space:nowrap"> <code> function adds($string){
if (get_magic_quotes_gpc() !== true){
return $sec = addskashes($string);
}
وبخصوص ال
stripslashes
مو مشكلة عملت هذه
function strip($strings){
$sec = str_replace("\'","'",$strings);
return $sec;
}
</code> </code>
ملاحظة : فكرة الدالة
والدالة
safe_input safe_output
مثل فكرة الدالتين
addslashes stripslashes
و
سهلة وما اعتقد تحتاج الى شرح طريقة وانشاء الله يكون حلي صحيح
التعديل الأخير كان بواسطة خطوة للأمام; 31 - 08 - 2014 الساعة 02:54
ألعاب الأندرويد مجانا و حصريا (http://www.apotox.info/forum)
https://fbcdn-sphotos-d-a.akamaihd.net/hphotos-ak-ash4/482113_236967293114455_1193518507_n.png (http://www.dzbatna.com)
©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى (http://www.dzbatna.com)©
السلام عليكم ورحمة الله
شريح تحصين مشروعك او برمجيتك من ثغرات sql injection
لديا بعض الطروق بدون استخدام اي داله وراح اطرحها لكم http://www.dzbatna.com/images/smilies/cupidarrow.gif
خطاء يقع فيه المبرمجين
مثال
رمز PHP:
<code style="white-space:nowrap"> <code> $sql=mysql_query("select * from news where id=$id ");
while($r=mysql_fetch_array($sql))
</code> </code>
لو شاهدنا هذا الجزء
رمز PHP:
<code style="white-space:nowrap"> <code> where id=$id
</code> </code>
لوجدنا بأنه يوجد ثغره sql injection
ويمكن الإستعلام من خلال متغير id بدون اي مشاكل
فالحل هنا
اضافة تنصيص مفرد
بهذا الشكل
رمز PHP:
<code style="white-space:nowrap"> <code> $sql=mysql_query("select * from news where id='$id' ");
while($r=mysql_fetch_array($sql))
</code> </code>
وطبعا هذه عن تجربة بكذا أنتهيت من الثغره بأبسط الطرق
الطريقة الثانية
عن طريق داله intval
رمز PHP:
<code style="white-space:nowrap"> <code> $id=intval($_GET['id'];
$sql=mysql_query("select * from news where id='$id' ");
while($r=mysql_fetch_array($sql))
</code> </code>
وظيفة الداله اخذ عدد رقمي فقط والغاء اي نص اضافي
وهادا راح يقبل جميع الحروف و لارقام و عند لاستعلام لا يقبل اي فاصلة ولكن يضهر بشكل عادي عند العرض
رمز PHP:
<code style="white-space:nowrap"> <code> $id=$_GET['id'];
$id2 = str_replace("'", "",$id);
$ww22=mysql_query("select * from news where id='$id2' ");
while($r=mysql_fetch_array($ww22))
{
echo $id:
}
</code> </code>
راح اشرح طريقةها
داله str_replace وظيفتها استبدال النصوص بنصوص اخرى
مثال لو كتب احدهم كلمه ممنوعه .. تتحول تلقائي الى *****
رمز PHP:
<code style="white-space:nowrap"> <code> $id= "test ray test";
echo $id2 = str_replace("ray", "***",$id);
</code> </code>
النتيجة
test *** test
رمز PHP:
<code style="white-space:nowrap"> <code> $id2 = str_replace("'", "",$id);
</code> </code>
لاحظ الكلمة الممنوعه هي '
واستخدمها فقط عند الإستعلام where
وعند العرض استخدم المتغير الغير معدل
كمان فى طريقة
اولاً دالة للحماية من الروابط الخارجية
$_GET
رمز PHP:
<code style="white-space:nowrap"> <code> function safe($num){
$num = intval($num) ;
$num = str_replace("-","",$num);
return $num;
}
</code> </code>
ودوال اثنين للحماية من الحقن الداخلي
رمز PHP:
<code style="white-space:nowrap"> <code> function safe_input($string){
$badword = array(
'select' => '&badwordseselect',
'insert' => '&badwordseinsert',
'drop' => '&badwordsedrop',
'where' => '&badwordsewhere',
'or' => '&badwordseor',
'and' => '&badwordseand',
'delete' => '&badwordsedelete',
'update' => '&badwordseupdate',
'in' => '&badwordsein',
'like' => '&badwordselike',
'set' => '&badwordseset',
'between' => '&badwordsebetween',
'join' => '&badwordsejoin',
'union' => '&badwordseunion',
'into' => '&badwordseinto',
'create' => '&badwordsecreate',
'unique' => '&badwordseunique',
'alter' => '&badwordsealter',
'from' => '&badwordsefrom'
);
foreach ($badword as $bad => $good ){
$string = str_replace($bad, $good, $string);
}
</code> </code>
الدالة اعلاه تستعمل لتنظيف السترينج قبل ادخاله الى الكويري
والدالة الثانية تستعمل في طباعة المخرجات
اي عند عرض النتائج
وهذه الدالة ايضاً للحماية
دالة Addslashes
رمز PHP:
<code style="white-space:nowrap"> <code> function adds($string){
if (get_magic_quotes_gpc() !== true){
return $sec = addskashes($string);
}
وبخصوص ال
stripslashes
مو مشكلة عملت هذه
function strip($strings){
$sec = str_replace("\'","'",$strings);
return $sec;
}
</code> </code>
ملاحظة : فكرة الدالة
والدالة
safe_input safe_output
مثل فكرة الدالتين
addslashes stripslashes
و
سهلة وما اعتقد تحتاج الى شرح طريقة وانشاء الله يكون حلي صحيح
التعديل الأخير كان بواسطة خطوة للأمام; 31 - 08 - 2014 الساعة 02:54
ألعاب الأندرويد مجانا و حصريا (http://www.apotox.info/forum)
https://fbcdn-sphotos-d-a.akamaihd.net/hphotos-ak-ash4/482113_236967293114455_1193518507_n.png (http://www.dzbatna.com)
©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى (http://www.dzbatna.com)©