لا ننسى ال Waisted Processing الذي يؤدي إلى ال Bufer over flows...
ولا ننسى ال eval وخطورتها
ولاننسى ال COOKIES وعدم أمانها
ولاننسى ال XSS>>>>>>>>>>>>>>>>>>
................
..............
...........
.........
......
....
..
.
لا ننسى ال Waisted Processing الذي يؤدي إلى ال Bufer over flows...
ولا ننسى ال eval وخطورتها
ولاننسى ال COOKIES وعدم أمانها
ولاننسى ال XSS>>>>>>>>>>>>>>>>>>
................
..............
...........
.........
......
....
..
.
__________________
ArabBB ... SoooooN!
أهم شي استخدام الدوال المناسبة !!
فكثيراً ما أجد أن مبرمجي سكربتات ال php (المبتدأين والمتوسطين) يتحققون من دخول المستخدم بـ:
كود PHP:
<?
if($foo != 'bar')
{
echo 'Error';
}
echo 'Hi';
?>
المفروض يكون بعمل Die وليس echo .. أو عمل exit بعد ال echo.....
__________________
ArabBB ... SoooooN!
الكوكيز يا مبرمجي ال PHP ......
الكثير الكثير الكثير يستخدم:
هذا خطأ.. فتزوير الكوكي سهل، أو بالأصح إرسال الكوكيكود PHP:
<?
if($_COOKIE['FooBarCookie'] == 1)
{
//logged user..
}
?>
أي شخص يستطيع إرسال طلب كالتالي (مثال):
$ telnet [site] [port]
[................................................]
GET /[script.php] HTTP/1.0
Cookie: FooBarCookie=1;
عندها سيكون كأنه أدمن مثلاً!
__________________
ArabBB ... SoooooN!
السيشنز المنشأه من قبل المبرمج...
مثلاً
ثم كل مرة يتأكد بالتالي:كود PHP:
<?
[After Loging..]
$s = md5(microtime());
[Add $s value to any where..]
Setcookie('s', $s);
?>
بكل بساطه أي شخص يستطيع عمل:كود PHP:
<?
[Get $s value..]
if($s != $_COOKIE['s'])
Die('Error');
?>
كود PHP:
<?
for($i=0; $i<=999999999999999999; $i++)
{
$fp = @fsockopen('www.foo.bar', 80);
fputs($fp, "GET /script.php HTTP/1.0 \r\nCookie: s=$i; \r\nConnection: Close\r\n\r\n");
$o = '';
while(!feof($fp))
$o .= fgets($fp, 1000000);
fclose($fp);
if(!eregi('error', $o))
Die('Success!.. Session Is: ['.$i.']');
}
?>
__________________
ArabBB ... SoooooN!
حسناً...
ال Exec Functions .. أو مايعرف بدوال التنفيذ التي يمرر لها أوامر shell
خطورتها تكمن في عدم إزالة أوامر الشل من المتغير...
__________________
ArabBB ... SoooooN!
الأبلود والتحقق عن طريق explode!!!!
يا حبيبي.... أي واحد يقدر يخلي امتداد الملفكود PHP:
<?
$a = explode('.', $file_name);
if($a[1] == 'php')
Die('Error');
?>
a.b.php مثلاً!
__________________
ArabBB ... SoooooN!
عمل شيء مشابه لـ:
من أكبر الأخطاء..!!كود PHP:
<?
for($i=0; $i<strlen($_GET['x']); $i++)
{
$_GET['x']{$i} = ord($_GET['x']{$i});
..............
..........
.........
}
?>
لأنه أي شخص قد يمرر قيمة x بحجم 1004050405405040504504050405045045045040540504054050405405405045040504504054050450405405045040540504 05405040540540504504959406954065495656456958695486549685
!!!!
__________________
ArabBB ... SoooooN!
إبقاء أشياء حساسة في السكربت دون الحاجه إليها...
مثلاً كلمة سر قاعدة البيانات بعد الإتصال بالقاعدة.
قد يتمكن المهاجم من عرض قيم المتغيرات بثغرة أو بطريقة ... فأنت بهذا تسهل له الإختراق وتعطيه باسورد القاعدة على طبق من ذهب!
__________________
ArabBB ... SoooooN!
قد يعمد مبرمجي php إلى انشاء متغيرات من متغيرات !!!
مثل
فيعمل:كود PHP:
<?
$foo = 'bar';
$$foo = 'This is Foo\Bar';
echo $bar;
?>
حسناً.. ماوجه الخطورة؟كود PHP:
<?
.............
.............
$$foo = $_GET['bar'];
............
............
?>
قد لايكون هناك متغير بإسم $foo في السكربت لذا يتم تمرير القيمة من المهاجم.
قد يتواحد مكان يتم عمل فيه include($a);
فيستطيع المهاجم تمرير قيمة $foo بحيث تكون a وقيمة bar بحيث تكون أي ملف REMOT مثلاً!
الحل:
أو تعديل ملف php.ini لجعل REGISTER GLOBALS في وضع offكود PHP:
<?
ini_set('REGISTER_GLOBALS', 0);
?>
__________________
ArabBB ... SoooooN!
Al Mobarmeg المبرمج
رائع بمعنى الكلمه
تحياتى اليك
__________________
[... الحمدُ لله خالقِ الخلق، باسط الرزق، فالقِ الاصباح، ذي الجلال والاكرام، والفضل والانعام، الذي بَعُد فلا يُرى، وقرُبَ فشهِد النجوى.. تبارَك وتعالى، الحمدُ لله الذي ليس له منازع يعادله، ولا شبيه يشاكله، ولا ظهير يعاضده، قهر بعزَّته الاعزاء، وتواضع لعظمته العظماء، فبلغَ بقدرته ما يشاء..]
برمجه برامج تطبيقيه بواسطه Visual C++ , Visual basic , C
احتراف قواعد بيانات Sql , Oracle , Access