تراجع إلى الخلف   :: TRAIDNT FORUM :: > قسم تطوير المواقع > ركن لغات البرمجه

ركن لغات البرمجه :: لغات البرمجه php و asp و Ajax و Java و غيرها

اساسيات البرمجة الامنة في لغة PHP

جريح الشوق أضفني كصديق الملخص في هذا المقال تم استعراض أهم الأساسيات والأمور التي يجب مراعاتها أثناء برمجة أي تطبيق بلغة PHP , وأهم هذه

اضافة رد
  #1  
قديمة 27 - 08 - 2010, 12:03 جريح الشوق غير متواجد حاليآ بالمنتدى
Banned
بيانات موقعي
اصدار المنتدى: منتج اخر
 






جريح الشوق يستحق التميز
أرسل رسالة بواسطة ICQ إلى جريح الشوق أرسل رسالة بواسطة MSN إلى جريح الشوق

جريح الشوق


الملخص

في هذا المقال تم استعراض أهم الأساسيات والأمور التي يجب مراعاتها أثناء برمجة أي تطبيق بلغة PHP , وأهم هذه الأساسيات هو تأمين المدخل القادم من مستخدم التطبيق حيث أن الحديث في هذا المجال يطول وذلك بسبب خطورة أي مدخل من قبل المستخدم, ولكن أهم ما تطرقت إليه هو عملية التحقق من صحة المدخل , مثل نوعية المدخل, لأن بعض المخترقين يتعمدون إدخال قيمة خاطئة من أجل تعطيل التطبيق أو من أجل إدراج قيمة خاطئة في قاعدة البيانات أو لحذف شيء منها , وقد ذكرتُ بعضا من الأمثلة التي تعمل على التحقق والتأكد من المدخل , وأيضا من الأمور التي تحقق تأمين المدخل الحماية من الثغرات التي يكون سببها أخطاء برمجية في برامج معينة مثل خادم الموقع ,فيأتي من يستغل هذه الثغرات ويكسر حماية الموقع أثناء الإدخال , ومن هذه الثغرات التي تحدثت عنها حقن SQL, البرمجة المتقاطعة للموقع و ثغرة استدعاء الملفات ,وتم ذكر الحلول المقابلة لمواجهة كل نوع من هذه الثغرات , والأمر الثاني هو رسائل الخطأ التي تظهر للمستخدم متى ما كان هناك خطأ ما وقت التشغيل , فذكرت أهمية إخفائها عن المستخدم وطريقة إخفائها, لأنها قد تكشف شيئا من خصوصية التطبيق,وفي المقابل كيفية تخزين هذه الأخطاء في ملف آمن بعيدا عن المستخدم من أجل الرجوع لها من قبل صاحب التطبيق لإيجاد حلول مناسبة لها.




المقدمة

لغة php تعتبر واحدة من أهم وأشهر لغات البرمجة لتطبيقات الويب من مواقع الكترونية وغيره, وكذلك من المعروف بأن هذه اللغة سهلة التعلم , فمن خلال الدروس المعروضة على الشبكة العنكبوتية بإمكان أي شخص لديه خلفية حتى وإن كانت بسيطة من إنشاء موقع وبرمجته بهذه اللغة , ولكن للأسف بالرغم من سهولتها إلا أن كثيراً من الأشخاص ولاسيما المبتدئين منهم تجاهلوا أمر كيفية الحماية أثناء البرمجة من المخترقين ونحوه ممن يستغل الثغرات الموجودة في التطبيق , فهذه اللغة معرضة لكثير من المخاطر التي تكسر حمايتها ومازالت هذه المخاطر في ازدياد مع استمرار الوقت , لذلك وُجدت أساسيات ومبادئ من أجل برمجة آمنة بإذن الله ,فمن هذا المنطلق وضعت هذه المقالة من أجل بيان أساسيات البرمجة الآمنة لهذه اللغة ,وإن كان المجال في هذا واسعا ولكن سأتطرق لأهم الأمور التي ينبغي مراعاتها لكل من لديه أو سينشئ مشروعا تطبيقيا بلغة php.




الكلمات المفتاحية

الثغرات , الاستعلام ,المهاجم , استدعاء الملفات , رسائل الخطأ.




1. تأمين المدخل في لغة php والتحكم به



1.1 التحقق من صحة المدخل
التحقق من تلك المدخلات خطوة ضرورية للحماية من المهاجمين وذلك من خلال التأكد من أن أي مستخدم يستطيع أن يدخل بياناته وفقا للنوع المحدد من قبل صاحب التطبيق فقط , ولا يسمح له بإدخال أي نوع آخر قد يشكل خطرا على التطبيق , حيث أن أشهر أنواع المهاجمين من يستغلون التطبيقات التي تخلو من عمليات التحقق ,فيتعمدون بإدخال بيانات خاطئة مثل : نوع خاطئ , حجم غير صحيح , بيانات تحتوي على رموز خاصة مثل:((escape أو بيانات بالصيغة الثنائية, مع العلم بأن إدخال البيانات بشكلٍ خاطئ قد يؤدي إلى تعطل التطبيق , كتابة بيانات غير صحيحة في قاعدة البيانات أو حذف بيانات منها , وسيكون المعنى أكثر وضوحا بذكر بعض الأمثلة الشائعة:
مثال-1- : لو كان أحد المدخلات لتطبيق ما هو إدخال تاريخ الميلاد , فلابد أن نتحقق من أن اليوم يأخذ القيمة الرقمية (1-30) , والشهر كذلك رقما مابين (1-12) , والسنة لابد أن تكون من أربع خانات وهكذا ,انظر صورة (1) , وفي حالة المخالفة لذلك يتم عرض رسالة خطأ مناسبة للمستخدم.انظر صورة(2). [3],[4]


صورة (1): مثال يوضح كيفية تأمين المدخل عن طريق التحقق من نوع البيانات المدخلة.


صورة (2): رسالة خطأ للمستخدم عند مخالفة المطلوب أثناء الإدخال

مثال -2- : في حالة أن التطبيق كان به محركاً للبحث ,وأراد المستخدم البحث عن كلمة معينة , أو عند تسجيل الدخول , وأدخل المستخدم كلمة البحث لكنه وضع مسافة من لوحة المفاتيح , سيؤدي ذلك إلى عرض جميع محتويات المكان الذي يبحث فيه , وبالتالي سيشكل هذا ضغطا على خادم التطبيق ومن ثم قد يؤدي إلى تعطله , فالحل هو عن طريق عملية التحقق من أن المدخل لا يحتوي على مسافات (فراغات) وذلك باستخدام الدالة trim() , انظر صورة(3). [10]


صورة (3): مثال للتحقق من عدم وجود فراغات أثناء الإدخال.



1.2 الحماية من الثغرات أثناء عملية الإدخال
"الثغرات هي أخطاء برمجية في برامج معينة مثل خادم الموقع وأي برامج أخرى ، لأنها من صنع البشر لذا
يجب أن تحتوي على أخطاء أو ( ثغرات) وهناك أنواع أخرى عبارة عن برامج مصممة ومكتوبة بلغات معينة
لاستغلال ثغرة معينة." [7]


1.2.1 الحماية من ثغرة البرمجة المتقاطعة للموقع
البرمجة المتقاطعة للموقع (Cross Site Scripting) ,اختصارها ((XSS, وفي بعض الأحيان يرمز لها بالرمزCSS) ) ,هذا النوع من الهجوم من أكثر الهجوم انتشارا في عالم الاختراق حيث يشكل بنسبة 25% من الهجوم, وهدفه هو السكريبتات ("مجموعة من الأوامر البرمجية ينتج عنها نظام إدارة متكامل حسب نوع الموقع والتوجه المطلوب") [11] المنفذة من جهة المستخدم, فهو يستغل البرمجة الغير آمنه ,وذلك بإرسال محتوى غير مرغوب فيه لمستخدم الموقع أو إلى المستخدم النهائي ومن ثم جمع معلومات عن الضحية , ويكون ذلك عن طريق استخدام أداة تعين ذلك المهاجم على ذلك مثل: السكريبتات المستخدمة خلال النماذج من جهة المستخدم (java script- Html –flash –Active X) وغيرها من الأدوات التي تضاف على التطبيق من أجل تصميم الواجهات وإضافة مزيد من الدينامكية للموقع, فيقوم المهاجم بحقن أو إضافة أمر html)) إلى أحد السكريبتات السابقة إذا كانت مصابة ,أي بها أخطاء برمجية من الناحية الأمنية ,ومن ثم يحصل الاختراق وسرقة المعلومات للتطبيق , وأحيانا من يشاهده أيضا , وهذه الثغرة منها نوعين:

1- ثغرة داخليه: يتم حقن الأمر داخل التطبيق نفسه مثل إدراج الأمر إلى صندوق الإهدائات للموقع.
2- ثغرة خارجية: يتم حقن الأمر من خارج التطبيق مثل عند إدخال رابط الموقع نفسه.
أما بالنسبة لحل هذا النوع من الهجوم ,فهناك عدة حلول منها:

1- متى ما اكتشف المبرمج وجود هذه النوعية من الثغرات في أوامر تطبيقه فإنه يقوم مباشرة بالتعديل,وذلك بمنع أوامر (HTML) من التنفيذ , باستخدام الوظيفة (Remove XSS()) , حيث تقوم هذه الوظيفة بعمل فلتره , أي حذف كل ثغرة من نوع ((XSS من أوامر التطبيق , ويتم وضع هذه الوظيفة في ملف من نوع ((PHP وتسميته بـ (XSS.PHP) ,ويقوم صاحب التطبيق بوضع هذا الملف في المجلد الذي يحوي ملف السكريبت المصاب , ثم وضع أمر واحد في أعلى الملف المصاب, وظيفته استدعاء الملف السابق وهو ( (include (xss.php); . [9],[10],[12]

2- كذلك من الحلول عمل فلتره وتصفية بالتحقق من صحة المدخل والبيانات التي تأتي من قبل المستخدم كما ذكرت في بداية هذا المقال.


3- استخدام وظائف خارجية مثل: (htmlentities(), strip_tags(),utf8_decode() ) والتي تعتبر فعالة وناجحة ,وتتميز بالسرعة وقلة الأخطاء التي تستغل ضد التطبيق , انظر صورة(4). [1]



صورة (4): أحد حلول التخلص من ثغرات XSS الفعالة.

1.2.2 الحماية من حقن SQL
هذا النوع من الثغرات أشد خطورة من ثغرات ((XSS ,ويسمى بحق الــ(SQL) , وسبب التسمية هو أنه يعتمد المهاجم على عملية حقن استفسار داخل الاستفسار الأساسي المطلوب ,بالتالي يتغير مجرى ذلك الاستفسار الأساسي ومن ثم يتم الإطلاع على معلومات وبيانات سريه وخاصة ليس له الحق بالإطلاع عليها مثل الرقم السري لصاحب التطبيق, أما بالنسبة لكيفية الحماية من هذا النوع من الهجوم فهناك بعضا من الحلول:
1- عملية تصفية للبيانات المدخلة من خلال الاستعلام , وذلك باستخدام الوظيفة ( filter_sql() ), انظر صورة(5).[9]


صورة (5): تصفية البيانات المدخلة لقاعدة البيانات باستخدام الوظيفة filter_sql().


2- في بعض الأحيان تكون البيانات المدخلة صحيحة لكنها تتضارب وتتعارض مع تنسيق جمل الاستعلام نفسها,فهذه مشكلة , ففي هذه الحالة من الأفضل استخدام الوظيفة mysql_escape_string() ) ) عند الاتصال بالخادم , انظر صورة(6).[3]


صورة (6): حل مشكلة التضارب مع تنسيق جمل الاستعلام بالرغم من أن البيانات المدخلة صحيحة


1.2.3 الحماية من ثغرات استدعاء الملفات
هذا النوع من الثغرات أخطر من XSS) ) ,وفي بعض الأحيان يكون أخطر من ثغرات SQL)) ,وذلك لأن خطرها ليس على المستخدم إنما على خادم التطبيق , ويكون ذلك الخطر عن طريق تغيير مسار أحد الملفات الأساسية المستدعاة إلى مسار ملفات خبيثة بأحد الدوال المشهورة مثل include)() ), انظر صورة (7), ومن ثم يكون للمخترق تحكماً شبه كامل بالتطبيق ,وأحيانا إذا كان ذلك المخترق من المحترفين فإنه يسيطر على الخادم بشكل كلي. [8]

هناك نوعان من استدعاء الملفات وهي:
1- تسمح باستدعاء ملفات من خارج الخادم.
2- تسمح باستدعاء ملفات من داخل الخادم كأن تكون محفوظة على شكل صورة.
الحل بكل بساطة هو القيام بإغلاق السجلات العامة الموجود في ملف ((php.ini ,انظر صورة(8) , لكن للأسف بما أن كثير من أصحاب التطبيقات قد اعتمدوا على الاستضافة المشتركة لتطبيقاتهم , لذلك لا يستطيعون التحكم بإغلاق تلك السجلات , فالحل هو أخذ إذن من المضيف بإعطاء القدرة على استخدام ملف htaccess)) ,ومن ثم وضع عملية الإغلاق داخل هذا الملف.[5]



صورة (7): الدوال المشهورة لاستدعاء الملفات والتي قد تشكل خطرا على أمن الموقع إذا استخدمت بشكل خاطئ.



صورة (8): إغلاق register_globals من أجل الحماية من ثغرات استدعاء الملفات.


2. إخفاء رسائل الخطأ

المقصود برسائل الخطأ , هي التي تظهر للمستخدم عندما يكون هناك خطأ ما وقت التشغيل , مثل : استخدام غير صحيح لوظيفة معينة , أو خطأ إملائي لأحد المتغيرات وغيرها من الأخطاء , انظر صورة (9) , فرسائل الخطأ من الأمور المهمة, فهي تخبرنا ما هو الخطأ وأين يوجد هذا الخطأ ,,لكن هذه الرسائل قد تكون سببا لمعرفة المستخدمين وخاصة المهاجمين منهم لمعلومات مهمة عن النظام وبالتالي استغلال نقاط ضعف هذا التطبيق, مثلٍ:عرض اسم ومسار ملف السكريبت الذي به الخطأ, اسم الوظيفة التي كان بها الخطأ و رقم السطر الذي احتوى الخطأ ,فيتعمد المهاجم للوقوع في الأخطاء من أجل الحصول على تلك المعلومات التي تفيده في كسر حماية هذا التطبيق , فلذلك لابد من إخفاء كل رسائل الخطأ عن المستخدمين للتطبيق , ويكون ذلك الإخفاء عن طريق إيقاف التوجيهات الخاصة بعرض الأخطاء التي تحدث وقت التشغيل فقط, انظر صورة (10)
لكن في المقابل عند حصول أي خطأ , فالمبرمج أو صاحب التطبيق مازال بحاجة إلى معرفة هذا الخطأ لمعالجته وحله , فلذلك لابد من التأكد من تسجيل كل الأخطاء في ملفات محمية , وهذا يتم عن طريق استخدام موجهات معينه لتسجيل الأخطاء بشكل دائم ,انظر صورة(11).
يوجد أربعة موجهات مسئولة عن التحكم بعمليه عرض الأخطاء وتسجيلها, ينبغي إعدادها بالشكل المطلوب, انظر جدول(1). [2],[3],[6]


صورة (9): مثال لرسالة خطأ تظهر للمستخدم وقت التشغيل


صورة (10): إيقاف عرض الأخطاء عن المستخدم وقت التشغيل


صورة (11): تمكين تسجيل الأخطاء في ملفات محمية باستمرار.


جدول (1): الموجهات المسئولة عن عرض الأخطاء وتسجيلها ,وتوضيح قيمها المطلوبة.







الخلاصة

في هذا المقال تحدثت عن بعض الأساسيات والأمور المهمة التي يجب مراعاتها أثناء برمجة أي تطبيق بلغة php من أجل الحصول على بيئة آمنه من المخترقين وغيرهم ممن ليس لهم الصلاحية للوصول لبعض البيانات والمعلومات الخاصة بالتطبيق ,ومن أهم هذه الأساسيات حماية وتأمين المدخل الذي يكون من قبل مستخدمي التطبيق ,وكذلك ما يخص رسائل الخطأ وأثرها على كشف شيء من خصوصية التطبيق , وأحب أن أنوه أنه في حالة افتراض صاحب التطبيق بأن تطبيقه لن يواجه أي نوع من الهجوم أو المخترقين أو المشاكل , ومن ثم واجه أي نوع منها فإن ذلك سيكلفه الكثير والكثير, ومن جهة أخرى متى ما اهتم صاحب التطبيق بحماية تطبيقه وأخذ الاستعدادات اللازمة أثناء البرمجة وبعدها لمواجهة أي نوع من الهجوم فإن ذلك سيجعل التطبيق أكثر أمانا.



السلام وعليكم ورحمة الله وبركاتة
أخوكم في الله
جريح الشوق
اضافة رد مع اقتباس نص هذه المشاركة
  رقم المشاركة : [ 2 ]
قديمة 27 - 08 - 2010, 13:40 QUIK SERVICES غير متواجد حاليآ بالمنتدى
:: عضـــو::
 


QUIK SERVICES يستحق التميز
أرسل رسالة بواسطة MSN إلى QUIK SERVICES أرسل رسالة بواسطة Skype™ إلى QUIK SERVICES
بيانات موقعي
اسم الموقع: منتديات فلاي عرب 3
اصدار المنتدى: منتج اخر
افتراضي
QUIK SERVICES
جزاك الله خيرا
حقيقة قدمت متخصر جميل وجيد للإخوة الذين لا يجيدون حماية برمجياتهم
فقط تبقى نقطة لم تذكرها فالحماية لا تعتمد دائما على البرنامج فمرات تكون بسبب السيرفر
توقيع QUIK SERVICES
The Magician

قريبا إن شاء الله :
--> السآحر للخدمات البرمجية مع أفضل الأسعار و سكريبتات إحترافية .
OOP PHP , CSS3 , XHTML , jQuery , Ajax , JavaScript , MySql
سكريبتك كما تتمناه أنت وبأحدث الحركات
  اضافة رد مع اقتباس نص هذه المشاركة
  رقم المشاركة : [ 3 ]
قديمة 27 - 08 - 2010, 15:18 جريح الشوق غير متواجد حاليآ بالمنتدى
 


جريح الشوق يستحق التميز
أرسل رسالة بواسطة ICQ إلى جريح الشوق أرسل رسالة بواسطة MSN إلى جريح الشوق
بيانات موقعي
اصدار المنتدى: منتج اخر
افتراضي
اقتباس
 مشاهدة المشاركة المشاركة الأصلية أضيفت بواسطة : QUIK SERVICES
جزاك الله خيرا
حقيقة قدمت متخصر جميل وجيد للإخوة الذين لا يجيدون حماية برمجياتهم
فقط تبقى نقطة لم تذكرها فالحماية لا تعتمد دائما على البرنامج فمرات تكون بسبب السيرفر

أشكرك على مرورك الرائع يا الغالي .
بالتأكيد يا طيب بخصوص الحماية مو دائما تعتمد أساسيا على البرنامج فممكن أن يكون السبب من السيرفر ...

أخوك
جريح الشروق .
  اضافة رد مع اقتباس نص هذه المشاركة
  رقم المشاركة : [ 4 ]
قديمة 27 - 08 - 2010, 18:56 الشرقاوي للبرمجة غير متواجد حاليآ بالمنتدى
:: عضو نشيط ::
 
صورة 'الشرقاوي للبرمجة' الرمزية
 


الشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدود
بيانات موقعي
اسم الموقع: الشرقاوي للبرمجة والتصميم
اصدار المنتدى: لا أملك منتدى
افتراضي
الشرقاوي للبرمجة
ممتاز جدا ، خصوصا الفقرة الأخيرة بخصوص إخفاء الأخطاء

(ملاحظة صغيرة : empty و isset واحدة منهم تكفي على ما أعتقد)
توقيع الشرقاوي للبرمجة
إسم المجموعة : الـشـرقـاوي لخدمات البرمجة والتصميم
إسم صاحب المجموعة : محمد عمر الشرقاوي المكناسي
رقم الهاتف : من داخل المغرب 0633457675 ومن خارج المغرب 00212633457675
البريد :[email protected]

  اضافة رد مع اقتباس نص هذه المشاركة
  رقم المشاركة : [ 5 ]
قديمة 27 - 08 - 2010, 19:32 ابو عقيلي غير متواجد حاليآ بالمنتدى
:: عضو نشيط ::
 
صورة 'ابو عقيلي' الرمزية
 


ابو عقيلي ابو عقيلي ابو عقيلي ابو عقيلي ابو عقيلي ابو عقيلي ابو عقيلي ابو عقيلي
بيانات موقعي
اسم الموقع: ومن غيره ؟
اصدار المنتدى: منتج اخر
افتراضي
ابو عقيلي
بارك الله فيك جاري القراءة بس يا ليت توضح فائدة دوال الحماية (htmlentities(), strip_tags(),utf8_decode() ) واي دوال حماية اخرى
توقيع ابو عقيلي
إذا سمعت الكلمة تؤذيك ، فطأطئ لها حتى تتخطاك ,,

L4ixhotmail.com
  اضافة رد مع اقتباس نص هذه المشاركة
  رقم المشاركة : [ 6 ]
قديمة 27 - 08 - 2010, 20:09 Dr.MathDev غير متواجد حاليآ بالمنتدى
:: عضو نشيط ::
 
صورة 'Dr.MathDev' الرمزية
 


Dr.MathDev متمكنDr.MathDev متمكنDr.MathDev متمكنDr.MathDev متمكنDr.MathDev متمكنDr.MathDev متمكن
بيانات موقعي
اسم الموقع: خدمات بحر
اصدار المنتدى: منتج اخر
افتراضي
اقتباس
 مشاهدة المشاركة المشاركة الأصلية أضيفت بواسطة : مُحَمَد الشرقاوي
ممتاز جدا ، خصوصا الفقرة الأخيرة بخصوص إخفاء الأخطاء

(ملاحظة صغيرة : empty و isset واحدة منهم تكفي على ما أعتقد)


السلام عليكم

isset لا تكفي وحدها اسي محمد ، لانه يتاكد ليس من كونه يحمل قيمة ، بل هل هو موجود ،
رمز PHP:
index.php?do= 
لو عملت عليها
رمز PHP:
 isset($_GET['do']) 
راح يعطيك true ، اما ان كنت تريد التحقق من قيمتها هل هي فارغة ام لا فهناك دور empty

-------
بالنسبة لاخفاء الاخطاء ، اعذرني هذه ليست مجدية ، ، حتى وان عدت الى واقعك ، الا اذا كنت تسجلها بملف لكي تراجع اخطاء السكربت ،

شوف معي
هذاالخطا ، ماسببه ، اكيد لكل خطا سبب ، والحل يمكن في اخفاءها ليس اوتوماتيكيا ، لكن يديويا ، يعني تشوف سبب ظهور الخطا وتقوم بحله بنفسك ، كما ان اخفاء الاخطاء رايح يعمل لك ثقل في الموقع ان كانت كثيرة ، وربما بعضها يسبب اخطاء الهيديرز ،


--------
شكرا صاحب الموضوع ـ، موضوع قيم ،
جاري اتمام القراء ة ،
توقيع Dr.MathDev
أستغفر الله ، أستغفر الله
[/CENTER]
  اضافة رد مع اقتباس نص هذه المشاركة
  رقم المشاركة : [ 7 ]
قديمة 28 - 08 - 2010, 09:32 جريح الشوق غير متواجد حاليآ بالمنتدى
 


جريح الشوق يستحق التميز
أرسل رسالة بواسطة ICQ إلى جريح الشوق أرسل رسالة بواسطة MSN إلى جريح الشوق
بيانات موقعي
اصدار المنتدى: منتج اخر
افتراضي
جريح الشوق
بارك الله فيكم
اشكركم جميعا على المرور
  اضافة رد مع اقتباس نص هذه المشاركة
  رقم المشاركة : [ 8 ]
قديمة 28 - 08 - 2010, 16:21 T4mer غير متواجد حاليآ بالمنتدى
:: عضو نشيط ::
 
صورة 'T4mer' الرمزية
 


T4mer على طريق الابداعT4mer على طريق الابداعT4mer على طريق الابداع
بيانات موقعي
اسم الموقع: T4mer
اصدار المنتدى: لا أملك منتدى
افتراضي
T4mer
اقتباس
هذاالخطا ، ماسببه ، اكيد لكل خطا سبب ، والحل يمكن في اخفاءها ليس اوتوماتيكيا ، لكن يديويا ، يعني تشوف سبب ظهور الخطا وتقوم بحله بنفسك ، كما ان اخفاء الاخطاء رايح يعمل لك ثقل في الموقع ان كانت كثيرة ، وربما بعضها يسبب اخطاء الهيديرز ،

ربما يقصد إخفاء الأخطاء عن المخترق لكي لا يستغلها .
أنا اقوم دائماً بإخفاء الثغرات من ال php.ini للسيرفر .

شكراً أخي على الموضوع .
بارك الله فيك
توقيع T4mer

لم يعد يمكن أن أبقى هنا ،،

فهنا يبكي على بعضي بعضي

مجتمع مبرمجي الحاسوب ،
غزة - شارع الثلاثيني مقابل سلطة الطيران
برج الباشا الطابق السادس .
  اضافة رد مع اقتباس نص هذه المشاركة
  رقم المشاركة : [ 9 ]
قديمة 29 - 08 - 2010, 06:36 الشرقاوي للبرمجة غير متواجد حاليآ بالمنتدى
:: عضو نشيط ::
 
صورة 'الشرقاوي للبرمجة' الرمزية
 


الشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدود
بيانات موقعي
اسم الموقع: الشرقاوي للبرمجة والتصميم
اصدار المنتدى: لا أملك منتدى
افتراضي
اقتباس
 مشاهدة المشاركة المشاركة الأصلية أضيفت بواسطة : JawadSoft
السلام عليكم

isset لا تكفي وحدها اسي محمد ، لانه يتاكد ليس من كونه يحمل قيمة ، بل هل هو موجود ،
رمز PHP:
index.php?do= 
لو عملت عليها
رمز PHP:
 isset($_GET['do']) 
راح يعطيك true ، اما ان كنت تريد التحقق من قيمتها هل هي فارغة ام لا فهناك دور empty

،


قل لي

هل يوجد فرق بين :

رمز PHP:
 
if(isset($_GET['do']))
{

و

رمز PHP:
 
if(!empty($_GET['do']))
{
 

كلا ما وضعته له نفس الغرض (الإختلاف في طريقة التحقق)

هل لازلت مُتأكدا أن واحدة لا تكفي ؟

لأنك ذكرت أنه يجب علينا :

التحقق أنه موجود

والتحقق أنه غير فارغ

وهذا نفس شيئ إذا كان غير فارغ فهو موجود وإذا كان موجود فهو غير فارغ

(أنا فهمت قصدك ، لكن واحدة تكفي كما ذكرت ! وحسب ما ذكرته فالـempty تكفي)
توقيع الشرقاوي للبرمجة
إسم المجموعة : الـشـرقـاوي لخدمات البرمجة والتصميم
إسم صاحب المجموعة : محمد عمر الشرقاوي المكناسي
رقم الهاتف : من داخل المغرب 0633457675 ومن خارج المغرب 00212633457675
البريد :[email protected]

التعديل الأخير كان بواسطة الشرقاوي للبرمجة; 29 - 08 - 2010 الساعة 06:45
  اضافة رد مع اقتباس نص هذه المشاركة
  رقم المشاركة : [ 10 ]
قديمة 29 - 08 - 2010, 07:49 Dr.MathDev غير متواجد حاليآ بالمنتدى
:: عضو نشيط ::
 
صورة 'Dr.MathDev' الرمزية
 


Dr.MathDev متمكنDr.MathDev متمكنDr.MathDev متمكنDr.MathDev متمكنDr.MathDev متمكنDr.MathDev متمكن
بيانات موقعي
اسم الموقع: خدمات بحر
اصدار المنتدى: منتج اخر
Idea
اقتباس
 مشاهدة المشاركة المشاركة الأصلية أضيفت بواسطة : مُحَمَد الشرقاوي
قل لي

هل يوجد فرق بين :

رمز PHP:
 
if(isset($_GET['do']))
{

و

رمز PHP:
 
if(!empty($_GET['do']))
{
 

كلا ما وضعته له نفس الغرض (الإختلاف في طريقة التحقق)

هل لازلت مُتأكدا أن واحدة لا تكفي ؟

لأنك ذكرت أنه يجب علينا :

التحقق أنه موجود

والتحقق أنه غير فارغ

وهذا نفس شيئ إذا كان غير فارغ فهو موجود وإذا كان موجود فهو غير فارغ

(أنا فهمت قصدك ، لكن واحدة تكفي كما ذكرت ! وحسب ما ذكرته فالـempty تكفي)


السلام عليكم محمد اخي / ،،

ناخد كمثال المتغيرات ـ عند اجراء التحقق على متغير بالدالتين ،
الكثير يقع في الخلط بين هاتين الدالتين اللتان تتشابهان قليلا ،

الدالة empty :

bool empty ( mixed var )
اذا كانت قيمة $var ، فارغة ، او كانت تساوي 0 ، يكون ناتجها ، True
ماذا تعني قيمة فارغة داخل الدالة empty ؟؟
القيمة الفارغة التي تعتبرها الدالة هي :
  • []‘ ‘
  • []0
  • []'0'
  • []False
  • []مصفوفة فارغة array
  • []Null
  • متغير فارغ داخل كلاس ،
اما بالنسبة ل isset
وظيفتها تتحقق حسب ماورد في المانويل ، هل المتغير موجود يعني هل هو محدد ، وليس Null ،
خذ معي مثال ،
انت تقول ان !empty تكفي وحدها في كل الحالات ،


انا اريد اتحقق من متغير هل هو محدد يعني هل هو موجود ،
  • كل موجود ليس بالضرورة غير فارغ
  • كل متغير غير فارغ هو بالتاكيد موجود ،
  • كل متغير غير موجود لايمكن ان يكون فارغ << فلسفية شوية
  • كل متغير لايحمل قيمة ، فهو موجود ،


انا اريد اتحقق فقط من القيمة هل هي متواجدة ، بغض النظر عن انها تحمل قيمة او لاتحملها ، empty لن تفيد هذه الحالة ، وانت تقول انها تكفي ،
لو كان كلامك صحيحا لقام المسؤولون في php باقتلاع isset ان صح التعبير ،

خلاصة القول ،
عندما تريد ان تتاكد من القيمة لمتغير فارغة ولا لا ، استعمل empty
عندما تريد ان تتاكد ان المتغير محدد وليس Null بغض النظر عن قيمته هل هي فارغة ولا لا ، استعمل isset ، ملاحظة null لا تعني فارغ ،

اعتذر من صاحب الموضوع على طول الرد ،
محمد : لك مني اجمل تحية ، فهمت ماترمي اليه ، ونخليه افادة للاخرين ;) ،
توقيع Dr.MathDev
أستغفر الله ، أستغفر الله
[/CENTER]
  اضافة رد مع اقتباس نص هذه المشاركة
  رقم المشاركة : [ 11 ]
قديمة 29 - 08 - 2010, 11:02 جريح الشوق غير متواجد حاليآ بالمنتدى
 


جريح الشوق يستحق التميز
أرسل رسالة بواسطة ICQ إلى جريح الشوق أرسل رسالة بواسطة MSN إلى جريح الشوق
بيانات موقعي
اصدار المنتدى: منتج اخر
افتراضي
جريح الشوق
جزاكم الله خير
ومشكورين على المرور
  اضافة رد مع اقتباس نص هذه المشاركة
  رقم المشاركة : [ 12 ]
قديمة 29 - 08 - 2010, 12:50 abyhafs غير متواجد حاليآ بالمنتدى
:: عضـــو::
 
صورة 'abyhafs' الرمزية
 


abyhafs يستحق التميز
أرسل رسالة بواسطة MSN إلى abyhafs أرسل رسالة بواسطة Yahoo إلى abyhafs أرسل رسالة بواسطة Skype™ إلى abyhafs
بيانات موقعي
اسم الموقع: موقع المُسنَدِي للعلوم الشرعية
اصدار المنتدى: 3.8.3
افتراضي
abyhafs
بارك الله فيكم

درس مفيد
توقيع abyhafs
اسم الشركة : دار حفص للبحث العلمي وتحقيق التراث
صاحب الشركة : أبو حفص المسندي القاهري
أداء الشركة : صف - تخريج أحاديث - تحقيق مخطوطات - تنسيق - بحث علمي - مراجعة لغوية - تصميم - برمجة - دعم فني
بريد صاحب الشركة : abyhafshotmail.com
رابط عروض الشركة : http://www.mosndy.net/dar-hafs/
هاتف : 00201222732826 - 00201142710041
--------------------------------

موقع أهل الإسناد لعلوم الحديث الشريف
www.ahlalisnad.com
موقع المسندي للعلوم الشرعية
www.mosndy.net
  اضافة رد مع اقتباس نص هذه المشاركة
  رقم المشاركة : [ 13 ]
قديمة 29 - 08 - 2010, 13:37 QUIK SERVICES غير متواجد حاليآ بالمنتدى
:: عضـــو::
 


QUIK SERVICES يستحق التميز
أرسل رسالة بواسطة MSN إلى QUIK SERVICES أرسل رسالة بواسطة Skype™ إلى QUIK SERVICES
بيانات موقعي
اسم الموقع: منتديات فلاي عرب 3
اصدار المنتدى: منتج اخر
افتراضي
QUIK SERVICES
اخوي الشرقاوي
كما قال الاخ جريح الشوق يوجد اختلاف واضح جدا
توقيع QUIK SERVICES
The Magician

قريبا إن شاء الله :
--> السآحر للخدمات البرمجية مع أفضل الأسعار و سكريبتات إحترافية .
OOP PHP , CSS3 , XHTML , jQuery , Ajax , JavaScript , MySql
سكريبتك كما تتمناه أنت وبأحدث الحركات
  اضافة رد مع اقتباس نص هذه المشاركة
  رقم المشاركة : [ 14 ]
قديمة 29 - 08 - 2010, 17:43 جريح الشوق غير متواجد حاليآ بالمنتدى
 


جريح الشوق يستحق التميز
أرسل رسالة بواسطة ICQ إلى جريح الشوق أرسل رسالة بواسطة MSN إلى جريح الشوق
بيانات موقعي
اصدار المنتدى: منتج اخر
افتراضي
جريح الشوق
مشكورين جميعا على المرور
انتظرو الإبداع القادم
  اضافة رد مع اقتباس نص هذه المشاركة
  رقم المشاركة : [ 15 ]
قديمة 29 - 08 - 2010, 17:47 الشرقاوي للبرمجة غير متواجد حاليآ بالمنتدى
:: عضو نشيط ::
 
صورة 'الشرقاوي للبرمجة' الرمزية
 


الشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدودالشرقاوي للبرمجة نشاط بلا حدود
بيانات موقعي
اسم الموقع: الشرقاوي للبرمجة والتصميم
اصدار المنتدى: لا أملك منتدى
افتراضي
اقتباس
 مشاهدة المشاركة المشاركة الأصلية أضيفت بواسطة : JawadSoft
السلام عليكم محمد اخي / ،،

ناخد كمثال المتغيرات ـ عند اجراء التحقق على متغير بالدالتين ،
الكثير يقع في الخلط بين هاتين الدالتين اللتان تتشابهان قليلا ،

الدالة empty :

bool empty ( mixed var )
اذا كانت قيمة $var ، فارغة ، او كانت تساوي 0 ، يكون ناتجها ، True
ماذا تعني قيمة فارغة داخل الدالة empty ؟؟

القيمة الفارغة التي تعتبرها الدالة هي :

  • []‘ ‘

  • []0

  • []'0'

  • []False

  • []مصفوفة فارغة array

  • []Null
  • متغير فارغ داخل كلاس ،
اما بالنسبة ل isset
وظيفتها تتحقق حسب ماورد في المانويل ، هل المتغير موجود يعني هل هو محدد ، وليس Null ،
خذ معي مثال ،
انت تقول ان !empty تكفي وحدها في كل الحالات ،



انا اريد اتحقق من متغير هل هو محدد يعني هل هو موجود ،
  • كل موجود ليس بالضرورة غير فارغ
  • كل متغير غير فارغ هو بالتاكيد موجود ،
  • كل متغير غير موجود لايمكن ان يكون فارغ << فلسفية شوية
  • كل متغير لايحمل قيمة ، فهو موجود ،

انا اريد اتحقق فقط من القيمة هل هي متواجدة ، بغض النظر عن انها تحمل قيمة او لاتحملها ، empty لن تفيد هذه الحالة ، وانت تقول انها تكفي ،
لو كان كلامك صحيحا لقام المسؤولون في php باقتلاع isset ان صح التعبير ،

خلاصة القول ،
عندما تريد ان تتاكد من القيمة لمتغير فارغة ولا لا ، استعمل empty
عندما تريد ان تتاكد ان المتغير محدد وليس Null بغض النظر عن قيمته هل هي فارغة ولا لا ، استعمل isset ، ملاحظة null لا تعني فارغ ،

اعتذر من صاحب الموضوع على طول الرد ،
محمد : لك مني اجمل تحية ، فهمت ماترمي اليه ، ونخليه افادة للاخرين ;) ،

عليكم السلام

كلامك صحيح تماما ولا أخالفك فيما قلته إلا البعض

بغظ النظر أنط ذهبت بعيدا شيئا ما ، فهنا نتعامل مع المُداخلات فقط

وempty() هي المناسبة تماما

فعند وضعك لـ:

رمز PHP:
 
?do=
فسوف تعرف الـempty أنه فارغ

أما isset فلا

ولاحظ معي ، عندما تستخدم empty فإذا لم يكن do أصلا موجودا فسوف يرجع true ، يعني نفس وظيفة isset (عند استخدامها في المُداخلات ) ، لذلك فاستخدامنا لـisset مع empty هو شيئ زائد فقط لا غير

أتمنى تكون فهمت قصدي
توقيع الشرقاوي للبرمجة
إسم المجموعة : الـشـرقـاوي لخدمات البرمجة والتصميم
إسم صاحب المجموعة : محمد عمر الشرقاوي المكناسي
رقم الهاتف : من داخل المغرب 0633457675 ومن خارج المغرب 00212633457675
البريد :[email protected]

  اضافة رد مع اقتباس نص هذه المشاركة
اضافة رد

العلامات المرجعية

العبارات الدليلة
أساسيات, لغة, برمجة, php

أدوات الموضوع
طرق العرض

ضوابط المشاركة
لا يمكنك اضافة مواضيع جديدة
لا يمكنك اضافة مشاركات
لا يمكنك اضافة مرفقات
لا يمكنك تعديل مشاركاتك

رمز [IMG] : متاحة
رمز HTML : معطّلة
المراجع : معطّلة
Refbacks are متاحة



الساعة معتمدة بتوقيت جرينتش +3 . الساعة الآن : 08:21.
المعهد غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي معهد ترايدنت ولا نتحمل أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)


Powered by vBulletin® Version 3.8.7
.Copyright ©2000 - 2013, Jelsoft Enterprises Ltd

SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.