السلام عليكم ورحمة الله وبركاته ...
مقدمه:
منذ فتره طويله وانا استخدم لغة #C وقواعد بيانات MSSQL فى البرمجة بنمط Desktop Applications
وتعودت فى كتابة البرامج المعتمده على قواعد البيانات بالاسلوب النمطى الذى تعلمته من الكتب ومواقع الانترنت
وهو عمل Connection String ولزيادة الامان تكون مشفرة Encrypted Connection String تحتوى على عنوان الخادم واسم قاعدة البيانات واسم المستخدم وكلمة المرور
واقوم بتصميم جدول Users يحتوى على اسماء المستخدمين وكلمات المرور، وجدول اخر يحدد صلاحيات كل مستخدم.
فى بدء البرنامج، يقوم بالاتصال بخادم قواعد البيانات، ويطلب من المستخدم الاسم/كلمة المرور ، ثم بعد ادخالهم يتم عمل البرنامج وتحديد صلاحيات هذا المستخدم، وما هو مسموح وغير مسموح
المشكلة:
انا اشعر ان هذا الاسلوب يشوبه ضعف امنى:
1) ان البرنامج هو الذى يحدد الصلاحيات بناءاً على البيانات المخزنه فى قاعدة البيانات، وهنا يمكن عمل كراك للبرنامج يسمح للمستخدم ان يصل لكل ما يريد دون المرور على كود التحقق من الصلاحيات.
2) اذا تم عمل كراك للبرنامج، سيكون باستطاعة المستخدم تنفيذ جمل SQL على قاعدة البيانات، هذه الجمل قد تسمح له مثلاً بتغير وقت حضور وانصراف الموظفين المسجل بواسطة جهاز البصمة المرتبط بقاعدة البيانات.
ما هو افضل اسلوب للتغلب على مثل هذه التحديات ؟
