بسم الله الرحمن الرحيم
اليوكم نقدم لكم ملف اكسل يحتوي على اعلى اسعار الكلمات في جوجل ادسنس والتى يمكنك الاستفادة منها في زيادة ارباحك
للتحميل اضغظ هنا
ملاحظة سيتم كل شهر ارفاق لكل شهر متجدد
Blog
-
أسعار أعلى نقرات شهر سبتمر 2010 في ادسنس
-
تفصيل حول بنية النظام: ويندوز فون 8 Windows Phone
رأيت الكثير من الأسئلة واللبس حول الويندوز فون 8 ، كان على رأسها أن الويندوز فون 8 ما هو إلا تطوير للويندوز فون 7 ، وهذا أدى إلى الكثير من الافتراضات لدى المعتقدون أهمها أن الأجهزة الحالية سيتم تطويرها لتدعم الويندوز فون 8. وسأحاول أن أوضح هذا الأمر من ناحية هندسية برمجية بنبوية ، أيما شئت سمها المهم أن تصل الفكرة، وللعلم الحديث هنا سيطول.عندما صدر الويندوز فون 7 ، قمت بالحديث عن البرمجة لهذا النظام ، حيث البرمجة المتاحة كانت بخيارين هما Silverlight و XNA وكلاهما كود مدار Managed Code أي دوت نت فقط (C# and VB.NET)،
أما الكود الغير مدار Native Code – السي بلس بلس C++ – فهو ممنوع إطلاقاً ، وهذا معناه أنك من خلال الكود المسموح لك ( الكود المدار ) لا تستطيع الوصول المباشر إلى دوال النظام الأساسية واستدعائها ( Win32 API ) ،
وعليك فقط متابعة ما تصدره مايكروسوفت من هذه الدوال في إطار الكود المدار فقط.هذه الحدود في الوصول المباشر لها عوارض كثيرة ، وبما أنها حدود برمجية هذا يعني أنه سيكون هنالك حدودية برامجية ،
أي أن بعض البرامج المتعارف عليها لن تكون ممكنة لأنه يلزمها وصول مباشر لنظام التشغيل ولعتاد الهاتف ، وأبسط مثال على هذا الأمر برنامج الكشاف ( والذي يستخدم فلاش الكاميرا ) لم يكن متاح لبعض الأجهزة والسبب أن الدوال المدارة لا تدعم هذا العتاد وعلى المبرمج الانتظار حتى تدعمه مايكروسوفت في إصدار الكود المدار القادم،
وهذا ما كنت ذكرته في تأخر بعض البرامج الشهيرة من العمل على الويندوز فون 7 مثل السكايب أو حتى قارئ ملفات الأكروبات الكئيب المتوفر . بل وحتى بعضها لم يكن مكتوبا له أن يصدر يوما ما وقد قلت هذا في متصفح الفايرفوكس ، لأن هذه البرامج يلزمها وصول مباشر أو يلزمها استخدام مكتبات مكتوبة بال C++ .ما هو السبب ؟
سبب العلة الرئيسي هو أن منصة الدوت نت المستخدمة في الويندوز فون 7 مبنية على .NET Compact Framework وهو أمر بالكاد تقبلته أول ما قرأت عنه لعدة أسباب سيتضح بعضها بعد قليل.
ال .NET Compact Framework 3.7 هو إصدار المنصة التي تم استخدامها في الويندوز فون 7 واختصارا NETCF ، وهو نسخة مصغرة من الدوت نت تعمل على نظام التشغيل Windows Compact Embedded (WinCE) لتعمل على الأجهزة ذات العتاد المحدود مثلا الجوالات ، الثلاجات ، السيارات ، أي شيء لديه حدود في الذاكرة والمعالج ، ومرة أخرى طالما هنالك حدود في السعة والذاكرة ، سيكون هنالك حدود في الدوال ، وبالتالي حدود في البرامج …… .
ولكي يكتمل الموضوع ولا انسى شيء ، ال NETCF 3.7 هو نسخة محدثة عن NETCF 3.5 ، والاختلافات كالتالي
يتكون NETCF 3.5 من
1- NETCF 3.5 runtime المحرك
2- NETCF 3.5 BCL مكتبة الدوال والأصناف
3- NETCF 3.5 UI programming model مبنى على الويندوز فورمز !!!!!!أما NETCF 3.7 يتكون من السابق نفسه بهذه التعديلات بالترتيب
1- NETCF 3.7 runtime بتعديلات هائلة
2- NETCF 3.7 BCL (طبعا بإضافة مكتبات Silverlight 3 مع تعديلات بسيطة )
3- تم استبدال UI programming model بالخيارات التالين( Silverlight 3 ، XNA )أعتقد الصورة وضحت الآن وهي أن ال NETCF 3.5 مبنية واجهته للعمل للويندوز فورمز ، وقد تم استبدالها بكافة السبل بواجهة سيلفرلايت للعمل على الويندوز فون ، وهذا ما تبعه الكثير من التعديلات والجهد على مايكروسوفت ،
ولكن يكفي الحديث أنه مثلا عند إصدار مايكروسوفت لأي تعديل أو نسخة من السيلفرلايت ( مثلا الإصدار الرابع ) لا يمكنهم بسهولة نقله على الجوال ، لأن السيلفرلايت في حقيقته يستخدم جزء فوقي خاص من منصة الدوت نت العادية،
وهذا الجزء الخاص يجب تعديله مرة أخرى ليتوافق مع NETCF 3.7 ، ومن ثم تعديله مرة ثانية أو ثالثة ليتوافق مع الجوال ، يعني فيلم هندي ،
لذلك تأخر مثلا دعم عرض النص العربي في الويندوز فون ( حتى نزول 7.1 ) مع أن السيلفرلايت 4 كان قد صدر قبل إصدار الويندوز فون 7.0 ،
هذا بسبب الجهد الشاق الذي كان يتوجب على المطورين القيام به لدعم السيلفرلايت 4 على NETCF 3.7.
الكثير والكثير من المعاناة والجهد والحدود ، بلا جدوى ، وهذا ما أدى إلى الويندوز فون 8مرحبا بالويندوز فون 8 ( احبيبي )
عند الحديث عن الويندوز فون 8 ، فهنا الحديث عن نقلة نوعية في بنية النظام ، بل هنا نظام جديد كليا والشبه بينه وبين الويندوز فون 7 ، هو كالشبه بين الفيجوال بيسك 6 ، والفيجوال بيسك دوت نت .
الاختلافات كثيرة ويكفي الاختلاف في نظام التشغيل الأساسي ، فالويندوز فون 7 الذي يعمل على Compact Framwork كان يتطلب Windows Compact والذي كان مخصص للويندوز موبايل القديم حيث تم تطويره من من الإصدار السادس إلى السابع ليماشي المطلوب ،
أما الويندوز فون 8 فهو يعمل على نظام تشغيل مخصص مشابه بشكل كبير لنظام التشغيل ويندوز 8 مع بعض الخصومات ، أي أن النظام السابق Windows Compact تم التخلص منه واستخدام نظام مشابه للويندوز العادي ، وهذا يعني أنه يمكنك مستقبل استخدام بعض المكتبات في تطبيقاتك بين الويندوز فون 8 والويندوز 8 بدون تعديل ، وهو ما توفره مايكروسوفت في المكتبة المحمولة Portable Class Library.عندما يكون أساسا النظام مشترك أو واحد بين الويندوز فون والويندوز العادي ( المقصود بالمشترك هنا هي نفس ملفات الكيرنال والتعاريف والولوج للذاكرة .. إلخ ) ، سيكون أسهل للمهندسين في مايكروسوفت التعديل والتطوير فهو في النهاية نظام واحد وليس نظامين كالسابق ، فما سيتم تعديله وتطويره في الويندوز العادي سيكون متاح للويندوز فون 8 بدون جهد يذكر ( نسبيا ) .
ماذا عن منصة الدوت نت المستخدمة ؟!!!.
هذا هو السؤال المهم وسبب كتابة هذا الموضوع ، بالتأكيد يجب استبدال .NET Compact Framework المخصصة للويندوز فون 7 على ال Win CE بمنصة جديدة على النظام المشترك ،
أعزائي الكرام رحبوا معي ب .NET for Windows Phone 8 والذي يستخدم CoreCLR ،
إذا كنت لم تفطر فول هذا الصباح ستعلم أنها نفس منصة الدوت نت العادية المخصصة للويندوز 8 ، ولكن مع حذف الدوال التي لا تلزم على الجوال وهو أمر منطقي ، وتعديلات وإضافات أخرى أيضا منطقية ، وأضيف هنا عما لتوي قلته عن الفطور ، أنك لو كنت نبيها ، فستعلم أن CoreCLR ما هي إلا مكتبات العمل للسيلفرلايت مباشرة مرة أخرى مع بعض التعديلات والإضافات.
هذا يعني أن السيلفرلايت سيعمل بمكتباته مباشرة على الجوال ، ولا داعي لتعديله مرتين ، مرة ليتوافق مع منصة الكومباكت ( وهي الخطوة الصعبة ) ومن ثم تعديله ليتوافق مع الجوال ( وهي الخطوة الأسهل ) ، بل هنا يتم تعديله فقط لتوافق مع الجوال ( وهي الخطوة الأسهل ).التحدي هنا لمطوري مايكروسوفت هو دعم التطبيقات السابقة التي كانت تعمل على الويندوز فون 7 ، لتعمل على الويندوز فون 8 ، فهو نظام جديد ببنية جديدة ، ولكن المطورون اجتهدوا كل الجهد وأتموا الأمر ، فبما أن تطبيقات السيلفرلايت sandbox مغلقة ومغلفة عن النظام ، هنا مع النظام الجديد لدينا بنية مختلفة وقابلية للوصول للنظام ، فوداعا لل sandbox ، ولكن أن تتخيلوا الجهد الذي بذلوه في دعم هذه التطبيقات !
هنالك العديد من الاستنتاجات بدورها بعد دعم النظام الجيد وبعد دعم منصة الدوت نت بشكل أوسع منها
لدينا في هذا النظام قابلية الوصول المباشر ولدينا قابلية استخدام الكود الغير مدار Native code وأهلا بالسي بلس بلس ، هذا يعني لدينا تطبيقات أقوى لا محدودة .
أيضا يعني أن السي شارب 5 ، والفيجوال بيسك 11 – الموجودين في منصة الدوت نت 4.5 – بكل خصائصهم الجديدة تم دعمها على الجوال بشكل افتراضي مثلا البرمجة الغير متزامنة async والبرمجة الموازية للأنوية المتعددة ( طبعا مع دعم نظام التشغيل بشكل مستقل لهذا الأمر ).
أيضا يعني أن تطبيقات الويندوز فون 7 القديمة ستكون أسرع وأقل استهلاك للذاكرة على الويندوز فون 8 ، ببساطة لأنها تستخدم مكتبات سيلفرلايت مباشرة وليست معدلة لتعمل على منصة دخيلة كالسابق .
لهذا يتطلب الأمر شراء جهاز جديد يعمل بالويندوز فون 8 ، لأن الويندوز فون 8 يتطلب عتاد جديد ببنية جديدة، لا أقول أنه لن يعمل على العتاد السابق ، بل أقول أن الكفاءة ستكون أفضل على العتاد الجديد، وأقل جهدا على الشركات من تعديل النظام الجديد ليتوافق مع عتادها القديم.
أيضا لهذا لن تقوم مايكروسوفت بإصدار تحديث للويندوز 8، فالنظام الجديد ليست نظام معدل، بل هو نظام جديد كليا ، والذي يفترض من باب أن يصدر هذا التحديث هو شركات التصنيع ، مثلا شركة HTC تدفع ثمن تراخيص النظام الجديد لكل مستخدم وتقوم بتعديله وإرساله كتحديث للأجهزة الخاصة بها ، وهذا ما لن يتم ، حظاً أوفر لنا مستخدمي الويندوز فون 7.
شكرا لكم وأعتذر عن الإطالة.
-
لماذا لا يظهر النص كامل في أداة ScrollViewer
واجهتني هذه المشكلة في العمل على برنامج صدر المسلم للجوال وندوز فون 7 ، حيث النص
يظهر مقطوع في أداة الScrollViewer ، وبعد التجارب الفاشلة ، وثم البحث الناجح ،
وجدت المشكلة بفضل اللهالمشكلة لا تكمن في الأداة ، المشكلة تكمن في أداة عرض النص مثلا TextBlock ، حيث
لا تقبل بأكثر من 5000 حرف ، وبعد ذلك لا يظهر الباقي ، فكان الحل مني هو تقسيم
النص ، أحسب عدد الحروف وإذا كانت أقل من 5000 ن أقوم بإضافة أداة عرض نص جديدةجربت أيضا أداة RichTextBox ، وهي تتصرف بنفس الآلية
-
“تتبع الحركة” ميزة Apple TV الجديد
ذكر موقع TechCrunch أن شركة آبل ستقدم ميزات إضافية لجهاز التحكم الخاص بالجيل الجديد من تلفازها Apple TV حيث يفترض التقرير احتواء جهاز التحكم على حساس للحركة، وذلك لتتبع الحركة بمختلف الاتجاهات.
ويسمح هذا الحساس بالكشف عن الحركة بشكل مشابه لجهاز التحكم الخاص بجهاز الألعاب Wii الذي يعتمد على جهاز استشعار يعمل بالأشعة تحت الحمراء، ولم يقم التقرير بذكر إذا ما كان جهاز التحكم الخاص بآبل سيحتاج إلى ملحقات مماثلة لجهاز Wii لكي يعمل أو سيعمل من تلقاء نفسه.
ومن المتوقع أن تطلق شركة آبل النسخة الجديدة من تلفازها Apple TV خلال حدثها المزمع عقده يوم 9 سبتمبر، وأن يكون أحد أكبر التغييرات هي كيفية التحكم بهذا التلفاز. وكانت تقارير سابقة قد أشارت إلى إمكانية تزويد جهاز التحكم بلوحة لمس وميكروفون.
وستقوم شركة آبل بفتح متجر تطبيقات مخصص لتلفاز آبل Apple TV، وقد تضيف إليه الألعاب لاحقاً، والذي يبدو المسار المحتمل للشركة العملاقة.
-
العمل الجماعي في visual studio باستخدام team foundation server
هل لديك فريق كلن في بلده وتريدون العمل على تطوير برنامج معين
هناك خاصية ممتازه في الفيجوال ستوديو تمكنك من العمل بشكل جماعي والتحدث مباشره ومعرفه اخر التعديلات المضافه للبرنامج ومن قبل منقبل كل شئ عليك التسجيل في موقع يقدم خدمة team foundation server
هناك مواقع كثيره مدفوعه تقدم هذه الخدمه باسعار مرتفعه جدا
لاكن موقع codeplex.com
يقدم الخدمه بشكل مجاني تمامابعد التسجيل في كود بلكس اضف
بروجكت جديد
Create Project
بعد اضافة بروجكت جديد
اذهب للفيجوال ستوديو
من قائمة team explorer
اضغط على هذه الايقونه
اضف هذه البيانات نافذة الاتصال
اختر البروجكتوادخل اليوزر نيم والباسورد المسجل في الكودبلكس
لاضافة مطورين اكثر معك اذهب لموقع كودبلكس
من قائمة people اختار
manage team
وتستطيع اضافة من تشاء من المطورين
بعدها يستطيعون الدخول للفريق عبر الفيجوال ستوديو كما في الخطوه السابقه باستخدام اليوزر والباسورد الخاص بهم
للاسف وقت اضافة المقال هناك مشكلة في موقع الكود بلكس ولايمكنني الاتصال بالتيم سيرفر وشرح مزيد من الخصائص -
العمل الجماعي في visual studio باستخدام team foundation server
قبل كل شئ عليك التسجيل في موقع يقدم خدمة team foundation server
هناك مواقع كثيره مدفوعه تقدم هذه الخدمه باسعار مرتفعه جدا
لاكن موقع codeplex.com
يقدم الخدمه بشكل مجاني تماما
بعد التسجيل في كود بلكس اضف
بروجكت جديد

لاضافة البرنامج
افتح البرنامج في الفيجوال ستوديو ومن قائمه السولوشن اختر الاتي

في نافذة البيانات تجد معلومات الاتصال واليوزر نيم في صفحتك في الكودبلكس تحت اقائمة
source code

اختر البروجكت
لحفظ البرنامج الى سيرفر التيم فاونديشن سيرفر في الكود بلكس
من نفس القائمة
لاضافة مطورين اكثر معك اذهب لموقع كودبلكس
من قائمة people اختار
manage team
وتستطيع اضافة من تشاء من المطورين

عندما تذهب للصفحة الخاصة في الكود بلكس ستلاحظ البرنامج موجود في
ال source code
وهنا ميزه جيده
وتلاحظ انه في حالة تطوير اكثر من مبرمج لصفحه واحده وعمل
check in
فان التعديلات لاتضيع وتستطيع الرجوع لها
لدخول باقي فريق المبرمجين الطريقه
من قائمة
file
open
team project
وادخال البيانات كما موضع في الصورة -
System.Tuple فئة جديدة في منصة الدوت نت 4.0
استكمالا لسلسة مقالات: الجديد في منصة دوت نت 4.0 سنقوم اليوم بالتطرق لفئة Tuple وهي عبارة عن نوع جديد من المتغيرات.ال Tuple عبارة عن مجموعة ثابتة الحجم من العناصر تتكون من عدة متغيرات متشابهة النوع أو مختلفة (heterogeneous)، وعند طرح هذه الفكرة قد تخطر على بالك المصفوفة التقليدية وهو فعلا تصور صحيح، ولكن يختلف النوع Tuple عن المصفوفة في أنه كما ذكرت يمكن أن يحتوي على عدة أنواع من المتغيرات وليس نوع واحد فقط، ولا يخطر بذهنك أنه يحتوي على عدة أنواع مختلفة من المتغيرات على أن ال Tuple يحتوي على عناصر عامة مثلا من نوع Object، لا فالTuple يحتوي على أنواع متغيرات محددة (strong typing) وهذا مثال على إنشاء Tuple جديد
كما في الصورة فعند تعريف المتغير ووضع نوع الحقول، نرى أن إسناد القيم سيكون في تعليمات المتغير مثل ترتيب أنواع المتغيرات المرسلة وهي تسمى بالأسماء الافتراضية item1,item2,item3,item4…etcيمكن الوصول لعناصر الـ Tuple عبر كتابة اسم المتغير ثم اسم العنصر كالتالي
حيث سيطبع developers مع العلم أنها عناصر للقراءة فقط ولا يمكن إسناد قيم جديدة لها، بمعنى أن قيم عناصر الTuple ترسلها مرة واحدة وهي عند التصريح عنه ولا يمكن تغييرها (Tuple is immutable)توجد طريقة أخرى لإنشاء متغير من هذه الفئة عبر الطريقة المشتركة Tuple.Create
بقي أن أتطرق إلى أن هذا النوع من المتغيرات هو من النوع المرجعي Reference Type ويعطيك حتى 8 عناصر قابلة للزيادة لأي عدد من العناصر تريده.
قد تكون فكرة الـ Tuple غريبة نوعا ما، ولم تخطر ببالك كيفية استخدامها بعد، ولكن كن واثق بأنها حل سريع وبديل عن بعض الطرق التي نستخدمها حاليا
وفق الله الجميع
-
[فيديو] بدايتك لبرمجة تطبيقات على Windows Phone
بناء على طلب بعض الإخوة الكرام ، بكتابة مقالات حول البرمجة على الوندوز فون ، ولأن المقال يأخذ العديد من الوقت ، قررت عمل فيديو لضيق الوقت ، ولسهولة توصيل المعلومة وبإذن الله سأستمر على هذا النمط.
هذا الفيديو يشمل لك كل ما تحتاجة ( أغلبه ) لبدء البرمجة على النظام وندوز فون، ويؤهلك للانطلاق بإذن الله. -
احمي موقعك من الاختراق: هجوم SQL Injection
الأمان، أن تبقي موقعك في مأمن دائما، مسألة هامة ينعى بها الكثير من مطوري المواقع، فهم يسعون جاهدا للوصول إلى أفضل طرق الأمان التي تمكنهم من الحفاظ على مواقعهم من أي هجوم أو تدخل خارجي قد يفتك بمواقعهم.والهجمات الضارية كثيرة فهجوم ال SQL Injection أو حقن الاستعلام هي أحد تلك الهجمات وتعتبر من أشد الأخطار التي يمكنها أن تدمر ما برمجته من موقع أو برنامج ، فيمكن للمخترق أن يقوم بمسح قاعدة البيانات كاملة أو جزء منها أو سرقة محتوياتها أو التعديل عليها وذلك بتعديل بسيط في نماذج الإدخال أو بتغيير بسيط جدا في عنوان الموقع.
فهذا النوع من الهجمات يعتمد على إضافة جملة استعلام إلى المتغيرات الممررة للنظام بحيث يتم تنفيذ هذه الإضافة كجزء من جملة الاستعلام الأساسية الموجودة في النظام.
فعلى سبيل المثال لو قمت بكتابة الأمر التالي في موقعك:-
String str="Select count(*) from users where username=' " + txtuser.Text + " ' and password=' " + txtpassword.Text + " ' "; Int x; SqlCommand cmd=new SqlCommand(str,con); X=(int) cmd.ExecuteScalar(); If (x>0){ FormsAuthentication.RedirectFromloginPage(txtuser.Text,false); } else{ lblMsg.Text="Login attempt failed"; } Con.Close();هنا يتم استقبال اسم المستخدم وكلمة المرور من قبل المستخدم والتأكد من وجودهما في قاعدة البيانات من خلال استخدام استعلام لاسترجاع عدد الصفوف التي طابقت الشرط وبعد ذلك سيتم السماح للمستخدم بالدخول للصفحة التي يطلبها في حال طابقت الشرط.في هذا المثال يوجد إمكانية للمخترق بإدخال النص التالي في صندوق النص الخاص باسم المستخدم ليستطيع الدخول إلى النظام بدون الحاجة إلى اسم مستخدم وكلمة مرور وذلك بإضافة أحرف بسيطة مثل
‘ or 1=1 – –فتصبح جملة الاستعلام كالتالي وذلك لأن – – تقوم بحذف جميع ما بعدها :
Select count(*) from users where username = ' ' or 1=1 --
وهنا الشرط سيتحقق حيث 1 = 1 والطرف هذا مسبوق ب ( أو )أترى خطورة الأمر…أنت الآن قدمت موقعك للمخترق على طبق من ذهب
رغم خطورة هذا الأمر ، إلا أن الحل لا يحتاج إلى جهد كبير أو خبرة عالية.
لأن الحل أسهل مما تتوقع ، فالأسلوب البرمجي بحد ذاته يعتبر عامل أساسي في تحديد مستوى الأمان الذي يتحلى به الموقع
فلحماية موقعك من هجوم ال SQL Injection، يتطلب منك فقط تحسين أسلوبك البرمجي بإتباع التالي:
• لا تثق أبدا بما يدخله المستخدم من قيم في موقعك فيجب عليك التحقق من القيم المدخلة بواسطة أدوات التحقق وأيضا تقليل طول المدخلات التي يدخلها المستخدم فإذا كانت كلمة السر طولها 10 أحرف فيجب عدم السماح للمستخدم بتعدي الطول المسموح وذلك من خلال الخاصية maxlength
• لا تستخدم أبدا طريقة تمرير قيم المستخدم مباشرة في جملة الاستعلام كما في المثال الذي طرحته سابقا، ولكن يجب عليك استخدام الوسيطات ( SQL Parameters) أو الإجراءات المخزنة (Stored Procedures)
ولنكتب المثال السابق بطريقة آمنة ولكن لا تنسى قبل استخدام الوسيطات التحقق من القيم الممررة:
String str="Select count(*) from users where username=@username and password= @password"; cmd.Parameters.AddWithValue("@username", txtuser.Text); cmd.Parameters.AddWithValue("@password", txtpassword.Text); Int x; SqlCommand cmd=new SqlCommand(str,con); X=(int) cmd.ExecuteScalar(); If (x>0){ FormsAuthentication.RedirectFromloginPage(txtuser.Text,false); } else{ lblMsg.Text="Login attempt failed"; } Con.Close();وأيضا يجب أن تعلم بأن الإجراءات المخزنة لا تقي موقعك دائما من هجوم ال SQL Injection، فكما أخبرتك سابقا.. الأسلوب البرمجي الجيد هو الذي يحمي موقعك من الاختراق ولذلك عليك أن تكتب الإجراء المخزن بطريقة صحيحة وآمنة ولتوضيح الأمر بصورة جيدة سأعطي المثال التالي:CREATE PROCEDURE sp_getUser @username varchar(200) = NULL AS DECLARE @sql nvarchar(4000) SELECT @sql = ' SELECT [name], [address] ' + ' FROM [USERS] Where [username] = "' + @username + "" EXEC (@sql)
في هذا المثال يتم أخذ قيمة المتغير @username مباشرة من المستخدم ويدمج مع النص @sql والدالة EXEC تستخدم لتعطي النص كوسيط لتنفيذ الاستعلام وهذا الإجراء قابل للاختراق بالرغم من أخذ قيمة المستخدم كوسيطفالمشكلة تكمن في أن الوسيط بدلا من أن يكون هو النص المستخدم للبحث من خلاله في الاستعلام سيكون جزء من الاستعلام نفسه
ولجعل هذا الإجراء أكثر أمنا بالشكل التالي:
CREATE PROCEDURE sp_getUser @username varchar(200) = NULL AS DECLARE @sql nvarchar(4000) SELECT @sql = ' SELECT [name], [address] ' + ' FROM [USERS] Where [username] = ' SELECT @sql = @sql + ' [username] LIKE @username' EXEC sp_executesql @sql, N'@username varchar(200)', @username
• لا تستخدم حساب المدير للاتصال بقاعدة البيانات بل استخدم حساب محدود.• لا تخزن معلومات حساسة في ملفات واضحة بل قم بتشفير كلمات السر وجميع البيانات الحساسة وأيضا يجب تشفير جملة الاتصال إذا كانت تحتوي على كلمة سر
• لا تقم بوضع تفاصيل كثيرة في رسائل الخطأ، فالكثير من المبرمجين يقومون بتوضيح مكان المشكلة في الاستعلام وفي أي جدول في قاعدة البيانات وهذه التفاصيل تمكن المخترق من تكوين صورة كاملة عن بنية قاعدة البيانات الخاصة بالنظام حتى وإن لم يرى الشيفرة المصدرية.
الآن وبعد توضيح طريقة هجوم ال SQL Injection وإعطاءك الحلول اللازمة لتفادي هذا الهجوم والحفاظ على موقعك بشكل آمن
اتضح لديك الطريقة الأمثل لرفع مستوى الأمان لموقعك، فيجب عليك أيها المطور أن تقوم بتحسين كودك البرمجي بدلا من أن تقوم بتضييع وقتك الثمين للبحث عن أفضل طرق الأمان وهي موجودة بين يديك.