طھط±طھظٹط¨ ظ…ظ†طھط¯ظٹط§طھ ط§ظ„ظپط±ظٹظ‚ ط§ظ„ط¹ط±ط¨ظٹ ظ„ظ„ط¨ط±ظ…ط¬ط© ظپظٹ ط±طھط¨

مرحبا بالضيف ( دخول | التسجيل )

Reply to this topicStart new topicStart Poll

ملخص · [ عادي ] · تدريجي

> حماية قواعد البيانات وصلاحيات المستخدمين, أجعل برامجك أكثر تطور وحماية ومتانة

أمجد جمالي
post Apr 2 2005, 03:35 PM
مشاركة #1


عضو جديد
Group Icon

المجموعة: اعضاء جدد
المشاركات: 18
التسجيل: 26-January 05
رقم العضوية: 40,464



السلام عليكم ورحمة الله وبركاته

مسألة حماية قواعد البيانات من اكثر المهام اهمية وأولوية بالنسبة للمبرمج وهناك وجهان رئيسيان لحماية قواعد البيانات الاول متعلق بك انت كمبرمج وكيفية حماية حقوقك الفكرية والثاني متعلق بالعميل المستخدم للبرنامج وكيفية منح الصلاحيات للمستخدمين

في موضوعي رح اتناول المفهوم الثاني للحماية بالتفصيل وبالشرح الممل ومدعوم بالأمثلة
وبإذن الله رح حط كل خبرتي في هذا المجال هون في هذا الموضوع ولن ابخل بأي شيء.

اما بالنسبة للمفهوم الأول من الحماية اترك لكم مهمة البحث في قسم خلاصة المشاركات وهي وافية وكافية.

الدرس رح يتضمن الخطوات التالية وسوف اتناولها كما هي مرتبة أدناه

التخطيط للحماية
ماهي الصلاحيات التي يجب ان اعدها
كيف اتجنب الأخطاء الشائعة الموجودة في نظام الحماية
الحماية على مستوى المستخدمون والمجموعات (نظام الأمان الحقيقي) من واقع تجربة

برمجة الحماية والشفرة مكتوبة بواسطة ADO
Programming Security with ADO
ولن اترك اي sector او سطر كود الا وسوف اشرحه بإذن الله

شكراً

يتبع


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
أمجد جمالي
post Apr 2 2005, 03:44 PM
مشاركة #2


عضو جديد
Group Icon

المجموعة: اعضاء جدد
المشاركات: 18
التسجيل: 26-January 05
رقم العضوية: 40,464



السلام عليكم ورحمة الله وبركاته

بسم الله نبدأ

1-التخطيط للحماية:
1-تصنيف المستخدمين الى مجموعات كل مستخدم ينتمي الى مجموعة عمل مثال على ذلك
مجموعة المحاسبة
مجموعة مدخلين البيانات
مجموعة المشرفين
2-توزيع الصلاحيات على المجموعات وتجنب اخي الكريم تجنب توزيع الصلاحيات على لكل مستخدم على حدا
لأنه من السهل توزيع الصلاحيات على اربع او خمس مجموعات ونسبة وقوع الخطأ تكون 5-10 % ومن الصعب ضبط و توزيع الصلاحيات عى 30 مستخدم أو اكثر تكون نسبة الخطأ تتجاوز 50% وهذه من واقع تجربة
3-برمجة نموزج تسجيل دخول الى البرنامج تتألف من ثلاثة خالنات
أسم المستخدم
أسم مجموعة العمل
خانة إدخال كلمة المرور
3-حماية البيانات من التعديل والحذف او الوصول اليها من المستخدمين
4-التحقق من خصائص النظام قبل الدخول الى البرنامج
5-منع الوصول الى بعض النمازج من خلال حماية القوائم
6-عمل مخطط للصلاحيات للرجوع إليها مستقبلاً كما هو موضح في الصورة
user posted image
7-النسخ الإحتياطي الألي لقواعد البيانات


حماية البيانات من التعديل او الحذف او حتى الإطلاع عليها من قبل المستخدمين تأتي بالدرجة الأولى بالنسبة لي ولا أبالغ عندما أقول بأنه قد أصابني هوس بخصوص هذا الموضوع لذلك سوف أتناول حماية الجداول والاإستعلامات في الفترة الحالية واليك هذه الأوامر من مكتبة Dao في الكلاس PermaissionEnum

CODE
dbSecCreate
dbSecDBAdmin
dbSecDBCreate
dbSecDBExclusive
dbSecDBOpen
dbSecDelete
dbSecDeleteData
dbSecFullAccess
dbSecInsertData
dbSecNoAccess
dbSecReadDef
dbSecReadSec
dbSecReplaceData
dbSecRetrieveData
dbSecWriteDef
dbSecWriteOwner
dbSecWriteSec


هذه الأوامر لحماية او ازالة الحماية من الجداول الإستعلامات النماذج التقارير والماكرو
والذي سوف أتناوله الأن الاأوامر الخاصة بالجداول واللإستعلامات وهي

CODE
dbSecFullAccess "إضافة او إزالة جميع الإذونات"
dbSecInsertData "إضافة أو إزالة خاصية إدخال البيانات"
dbSecReadDef "إضافة أو إزالة خاصية قرائة التصميم"
dbSecRetrieveData "إضافة أو إزالة خاصية الوصول أو قراءة البيانات"
dbSecReplaceData "إضافة أو إزالة خاصية التعديل على البيانات"
dbSecDeleteData "إضافة أو إزالة خاصية حذف البيانات"


بإمكانك تجربة إضافة أو إزالة الأذونات عن طريق الكود في المثال الذي سوف أرفقه لاحقاً

كما بإمكانك من خلال الأكسيس إضافة أو إزالة الصلاحيات كما هو موضح في الصورة لكن عيب هذه الطريقة وهو في حال نقل قاعدة البيانات الى جهاز اخر يترتب عليك توزيع الصلاحيات من جديد والكثير من العيوب الإخرى

user posted image

شكراً

يتبع


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
أمجد جمالي
post Apr 2 2005, 03:47 PM
مشاركة #3


عضو جديد
Group Icon

المجموعة: اعضاء جدد
المشاركات: 18
التسجيل: 26-January 05
رقم العضوية: 40,464



مرفق الكود الخاص بإضافة وإزالة الصلاحيات برمجياً مع الشرح

الدالة Ap_AssignPermissionAdd تقوم بإضافة الصلاحيات
والدالة Ap_AssignPermissionRemove تقوم بإزالة الصلاحيات

عليك تمرير 4 بارمترات عند تجربة أي دالة من الدالاتين وهي
1-أسم المستخدم أو أسم المجموعة(الخاصة بالأوفيس وليس شاشة التسجيل الدخول)
2-أسم الكائن وليكن اسم الجدول او اسم الاستعلام
3-نوع الكائن جدول او نموزج اوتقرير
4-اسم الصلاحية التي تريد اعدادها للمستخدم او المجموعة

هذا هو الكود مع الشرح

CODE
Public Function Ap_AssignPermissionAdd(StrUserName, StrObjectName, StrObjectType, FlgPermission)

'-- StrUserName Parameter Accepting UserName or Group Name
'-- StrObjectName Parameter Means Table Name or Quiry name
'-- StrObjectType Parameter Means Tables,Quires,Forms,Reports And Macros
'-- FlgPermission Parameter Can be Any of Security Permission Constants

On Error GoTo ErrAssignPermissionAdd

  Dim Db As Database
  Dim Con As Container
  Dim Doc As Document
 
  '-- Take The Object Type and Object Name Parameters to Find The Object
  Set Db = CurrentDb
  Set Con = Db.Containers(StrObjectType)
  Set Doc = Con.Documents(StrObjectName)
 
  '-- Set The User or Group
  Doc.UserName = StrUserName
 
  '-- Does The Actual Sending of The Permission
  Doc.Permissions = Doc.Permissions Or FlgPermission
 
  '-- Function Complete Successfully
  Exit Function
 
ErrAssignPermissionAdd:
  DisplayMessageCritical "Function 'Ap_AssignPermissionAdd' did not complete successfully.", "Error Message"
  Exit Function
 
End Function


CODE
Public Function Ap_AssignPermissionRemove(StrUserName, StrObjectName, StrObjectType, FlgPermission)

On Error GoTo ErrAssignPermissionRemove

  Dim Db As Database
  Dim Con As Container
  Dim Doc As Document

  Set Db = CurrentDb
  Set Con = Db.Containers(StrObjectType)
  Set Doc = Con.Documents(StrObjectName)
 
  Doc.UserName = StrUserName

  Doc.Permissions = Doc.Permissions And Not FlgPermission
 
  Exit Function
 
ErrAssignPermissionRemove:
  DisplayMessageCritical "Function 'Ap_AssignPermissionRemove' did not complete successfully.", "Error Message"
  Exit Function
     
End Function


مثال على إضافة جميع الصلاحيات للمستخدم الموجود حالياً على الجدول TblUser
CODE
Ap_AssignPermissionAdd CurrentUser ,"TblUser","Tables",dbSecFullAccess



مثال على إزالة جميع الصلاحيات لمستخدم يدعى Amjad من الجدول TblUser
CODE
Ap_AssignPermissionRemove "Amjad" ,"TblUser","Tables",dbSecFullAccess




للتحقق من أن الكود يعمل جيداً إذهب إلى User And Group Permission كما هو موضح في الصورة وتأكد من ذلك
user posted image



--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
أمجد جمالي
post Apr 2 2005, 03:49 PM
مشاركة #4


عضو جديد
Group Icon

المجموعة: اعضاء جدد
المشاركات: 18
التسجيل: 26-January 05
رقم العضوية: 40,464



السلام عليكم ورحمة الله وبركاته

وهذا مثال يوضح كيفية إضافة أو إزالة الصلاحيات برمجياً على الجداول والإستعلامات

يتبع

الملفات المرفقة
الملف المرفق  SecurityProjectV0.1.zip ( 23.15k ) عدد مرات التحميل: 3801


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
mohammed2002
post Apr 2 2005, 03:53 PM
مشاركة #5


عضو
**

المجموعة: اعضاء
المشاركات: 84
التسجيل: 12-May 04
رقم العضوية: 25,628



موضوع ممتااااااااااااااز
ارجو الأستمرار إلى النهاية اخي امجد
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ABO ABDUUL
post Apr 2 2005, 04:32 PM
مشاركة #6


عضو
**

المجموعة: اعضاء
المشاركات: 60
التسجيل: 17-December 02
رقم العضوية: 6,460



اخي العزيز

موضوع اكثر من رائع

ولا يستغني عنه اي مبرمج


تحياتي
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
أشرف خليل
post Apr 2 2005, 09:26 PM
مشاركة #7


مشرف سابق
****

المجموعة: المشرفين القدامى
المشاركات: 1,467
التسجيل: 2-April 01
رقم العضوية: 427



موضوع طبعا الكل يحتاجه ويبحث عن طرق الحماية بأكثر من شكل .
نشكر الأخ أمجد على ذلك ونتمنى المواصلة حتى النهاية .
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
zahrah
post Apr 2 2005, 10:09 PM
مشاركة #8


مشرفة قسم قواعد بيانات مايكروسوفت أكسس
Group Icon

المجموعة: المشرفين
المشاركات: 2,084
التسجيل: 13-July 03
رقم العضوية: 15,367



موضوع رائع اخي امجد وفقك الله وننتظر اكمال الموضوع


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ابن مسقط
post Apr 2 2005, 11:51 PM
مشاركة #9


خبير أكسيس و مشرف سابق
****

المجموعة: المشرفين القدامى
المشاركات: 1,264
التسجيل: 12-July 01
رقم العضوية: 1,010



السلام عليكم ورحمة الله وبركاته

الأخ الكريم/ أمجد

إختيار موفق للعنوان وللموضوع
فالعنوان شدني وأجبرني على الدخول ، والموضوع شيق ومهم وأن شاء الله أمل منك إكماله لأهميته بارك الله فيك وأجرك عليه.

ولك خالص تحياتي وتقديري.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
أبو مالك1
post Apr 3 2005, 06:49 AM
مشاركة #10


عضو
**

المجموعة: اعضاء
المشاركات: 65
التسجيل: 26-December 03
رقم العضوية: 22,188



يا أخي جهد والله متعوب عليه...

أكمل الدرس ونحن في انتظار المزيد
والظاهر إنه بدأت علامات الهوس علييييا في هذه المواضيع

بارك الله فيك ...
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
أمجد جمالي
post Apr 4 2005, 01:25 PM
مشاركة #11


عضو جديد
Group Icon

المجموعة: اعضاء جدد
المشاركات: 18
التسجيل: 26-January 05
رقم العضوية: 40,464



السلام عليكم ورحمة الله وبركاته

سبق وارفقت مثال عن كيفية وضع الصلاحيات وتجربتها في الجدول

والأن ارفق مثال اخر يقوم بتوزيع الصلاحيات على المجموعات على جميع الجداول والاستعلامات في كل مرة يتم التسجيل الدخول فيها الى البرنامج

طريقة عمل البرنامج:

-شاشة دخول المستخدمين والغاية من هذه الفورم هو اسم المجموعة فقط
-فورم اسمه FrmMainMenu مهمته التحقق من أسم المجموعة وتشغيل ال Function الخاص بها
-يوجد جدول اسمه TblSetPermission يحتوي على اسماء الجداول والاستعلامات المراد توزيع الصلاحيات عليها
-يوجد ايضاً modules اسمه SetPermission فيه الكود الخاص بإضافة وإزالة الصلاحيات (تم شرحه مسبقاً)
-ويوجد ايضاً Functions وهي

CODE
'يقوم بإزالة جميع الصلاحيات من على الجداول والاستعلامات
'TblSetPermission الموجودة في الجدول
Ap_CodePermissionNoAccess
'----------------------------------------------------------------------------
'يقوم بإضافة جميع الصلاحيات من على الجداول والاستعلامات
'TblSetPermission الموجودة في الجدول
Ap_SetPermissionFullAccess
'----------------------------------------------------------------------------
'يقوم بإضافة الصلاحيات من على اجلداول والاستعلامات
'TblSetPermission الموجودة في الجدول
'Data Entrey لمجموعة عمل
كما تم التخطيط له مسبقاً في خريطة الأذونات أنظر الى الصور في المشاركات السابقة'
Ap_CodePermissionDataEntrey
'----------------------------------------------------------------------------
'يقوم بإضافة الصلاحيات من على الجداول والاستعلامات
'TblSetPermission الموجودة في الجدول
'Accounting User لمجموعة عمل
كما تم التخطيط له مسبقاً في خريطة الأذونات أنظر الى الصور في المشاركات السابقة'
Ap_CodePermissionAccountingUser
'----------------------------------------------------------------------------
'يقوم بإضافة الصلاحيات من على الجداول والاستعلاامت
'TblSetPermission الموجودة في الجدول
'Supervisor User لمجموعة عمل
كما تم التخطيط له مسبقاً في خريطة الأذونات أنظر الى الصور في المشاركات السابقة'
Ap_CodePermissionSupervisorUser
'----------------------------------------------------------------------------
'يقوم بإضافة الصلاحيات من على الجداول والاستعلامات
'TblSetPermission الموجودة في الجدول
'Programming User لمجموعة عمل
كما تم التخطيط له مسبقاً في خريطة الأذونات أنظر الى الصور في المشاركات السابقة'
Ap_CodePermissionProgrammingUser


وجميعها بلغة ال Ado
لمحة سريعة عن عمل هذه Function:
-تقوم بفتح الجدول TblSetPermission للقرائة فقط
-تقوم بعد السجلات الموجودة في هذه الجدول (يفيد في عرض حالة توزيع الأذونات على ال Status Bar ويلاحظ عندما يكون عدد الجدوال والاستعلامات المراد توزيع عليها الأذونات كبير)
-يمر على السجلات(أسماء الجداول) في الجدول TblSetPermission واحد تلو الأخر ويقوم بتوزيع الصلاحيات عليها
-يزيل الحالة من على Status Bar
-ويغلق الجدول TblSetPermission

ملاحظات هامة:
1-أقوم بإستخدام الدالة Ap_CodePermissionNoAccess قبل توزيع اي صلاحيات لأي مجموعة تمهيداً لإضافة الأذونات التي ارغب بها وللتأكد مائة با المائة من أن هذا الجدول لا يحتوي على اي صلاحية مثل يعني Refresh

2-في جميع الدالات أقوم بتوزيع الصلاحيات وأعيد تكرارها على هذه المجموعات
ِAdmins (مجموعة عمل)
Users (مجموعة عمل)
Admin (المستخدم الإفتراضي)
Current User (المستخدم الحالي)
وبالحالة هي بكون ضمنت 90% أنه شغلي صح
3-المستخدمين والمجموعات (كا أمثلة للتجريب)

CODE
'UserName            'Group                 'Password
'Abu Hadi            'Supervisor User       'Admin
'Abu Suliman         'Accounting User       'Admin
'Amjad Jamali        'Accounting User       'Admin
'Khuder AlRajbe      'Supervisor User       'Admin
'Mohammed Ali        'DataEntry User        'Admin
'Mohammed Taher      'Programmer User       'Admin
'Radhwan             'DataEntry User        'Admin
'Sahel Alareshi      'Programmer User       'Admin


واذا في حدا عنده تعليق أ فكرة جديدة على طريقتي الرجاء أفيدوني

شكراً rolleyes.gif

يتبع

تم تحرير المشاركة بواسطة أمجد جمالي: Apr 4 2005, 03:00 PM

الملفات المرفقة
الملف المرفق  SecurityProjectV0.2.zip ( 131.28k ) عدد مرات التحميل: 3372


--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
أمجد جمالي
post Apr 4 2005, 01:32 PM
مشاركة #12


عضو جديد
Group Icon

المجموعة: اعضاء جدد
المشاركات: 18
التسجيل: 26-January 05
رقم العضوية: 40,464



أشكركم أخواني واخواتي على تشجيعكم
ووعد مني بأني رح تابع حتى النهاية



--------------------
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
عبدالمانع
post Apr 4 2005, 04:27 PM
مشاركة #13


خبير آكسيس
***

المجموعة: الخبراء المعتمدين
المشاركات: 587
التسجيل: 18-January 05
رقم العضوية: 40,048



يعطيك العافية اخي الفاضل

مع خالص التحيات ،،،
عبدالمانع


--------------------
إنما الأمم الأخلاق ما بقيت ××× فإن هم ذهبت أخلاقهم ذهبوا ...
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
diamond
post Apr 5 2005, 07:20 AM
مشاركة #14


عضو جديد
Group Icon

المجموعة: اعضاء
المشاركات: 23
التسجيل: 9-March 05
رقم العضوية: 43,615



جزاك الله خيرا
نأمل المتابعة وفقك الله
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
sx1
post Apr 5 2005, 10:04 AM
مشاركة #15


عضو
**

المجموعة: اعضاء
المشاركات: 134
التسجيل: 8-February 05
رقم العضوية: 41,366



يعطيك العافية
في انتظار المزيد
نرجو المتابعة للنهاية كما وعدت
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicTopic OptionsStart new topic
1 عدد القراء الحاليين لهذا الموضوع (1 الزوار 0 المتخفين)
0 الأعضاء:
 

نسخة خفيفة الوقت الآن: 1st May 2006 - 07:46 AM
طھط±طھظٹط¨ ظˆط¥ط­طµط§ط¦ظٹط§طھ ط§ظ„ظ…ظˆط§ظ‚ط¹ ظپظٹ ط±طھط¨