ابوخليل قام بنشر سبتمبر 23, 2023 قام بنشر سبتمبر 23, 2023 السلام عليكم خير الكلام ما قل ودل . اللهم صل على محمد وآله وصحبه . بسبب ملاحظتي لحرص البعض _خاصة المستجدين _ على مسألة الحماية واستخدام طرق معقدة والبحث عن الجديد والأقوى احببت ان انشر تجربتي وخبرتي في هذه المسألة كأيسر وكذلك اقوى طريقة . الحماية من جهتين : 1- حماية البيانات وهي الجداول .. وهذه تهم المستخدم ( العميل) 2- حماية البناء ..( التصميم بما يشتمل من اكواد وغيرها ) وهذه تهم المبرمج ----------------------------------- الجهة الأولى : 1- اكسس ضعيف جدا في حماية جداوله .. لأن اي مستخدم مهما ضعفت صلاحياته يمكنه التمكن من الجداول ( نسخ / تغيير / حذف) 2- اي شخص يملك قاعدة بيانات اكسس يمكنه الوصول الى الجداول ما لم يتم حمايتها بكلمة مرور اكسس 3- ينطبق هذا على القواعد المقسمة حيث يجب تفعيل كلمة مرور اكسس على الواجهات الأمامية قبل عرض كلمة مرور المستخدم ، والا ستكون الجداول في متناول اليد . نأتي للجهة الثانية وهي ما يخص المبرمج : من خلال تجارب وخبرة سنوات افضل طريقة تريح المبرمج وكذلك العميل وبعيدا عن غرس الملفات والريجستري والفلاش : الاعتماد على رقم سيريال واحد من عتاد الجهاز ( قرص صلب / معالج / اللوحة الأم ) بشرط ان يكون الرقم اساسي خاصة القرص الصلب لا يتغير عند عمل التهيئة . فكون الرقم اساسي لا يتغير يفيد العميل عندما يقوم بتهيئة القرص ، وهو مريح ايضا للمبرمج ( يوجد كثير من المواضيع هنا في هذا المنتدى تشرح عملية استخلاص ارقام القطع الداخلية لجهاز الحاسب .. ابحث ) الخطوات : --------------------------------- - استخراج واستخلاص الارقام من السيريل ( غالبا يأتي مختلط بارقام وحروف) سيظهر هذا الرقم للعميل في فورم التسجيل واسفله حقل لادخال رقم النسخة ------------------------------- - نعمل دالة1 = استقطاع جزء محدد من النتيجة .. مثلا خمسة ارقام او اربعة ارقام من اليمين او من اليسار ( استقطاع ثابت) - نعمل دالة2 = اجراء معادلة على دالة1 ، مثلا ( دالة1 (x) 1234567 + 53954 ) ------------------------------- - عندما يرسل العميل رقم السيريل ويطلب رقم النسخة نقوم بعمل المعادلة ومن ثم نرسلها للعميل نتيجة هذه المعادلة ستبقى ملك دائم لجهاز حاسب واحد ما دام على قيد الحياة -------------------------------------------------------------------------------------------------------------- ما ذكرته اعلاه هو للنسخة الدائمة .. أما النسخة المؤقته فأقوم بعملها كالتالي : يجب ان يكون العمل مقسم الى واجهات وجداول . يجب ان اتعامل مع العميل على اساس نسختين من الواجهات : مؤقتة / دائمة الفرق بين الواجهة المؤقتة والواجهة الدائمة .. هي زيادة سطرين بشرطين في المؤقتة 1- الشرط 1: لن تفتح المؤقتة الا مع وجود الأنترنت شغال 2- نضع سطرا نحدد تاريخ توقف البرنامج ( يتم جلب التاريخ من الانترنت ) لنفرض انتهت مدة التجربة بعد شهر او شهرين .. وتم الشراء .. هنا نرسل الواجهة الدائمة للصق والاستبدال . هنا نكون حافظنا على بيانات العميل المدخلة وعلى حقوقنا البرمجية ----------------------------------------------------- نقطة اخيرة : سيتبادر الى الذهن ! اين يحفظ رقم النسخة ؟ لأن البرنامج سيطلبه عند كل اقلاع ؟ الجواب : ما دام رقم النسخة ملكا للجهاز فيمكن حفظه في اي مكان ، مثلا في حقل في جدول بشرط ان يحتوي الجدول على سجل واحد فقط او يمكن حفظه في ملف نصي بجانب قاعدة البيانات وهذه الطريقة الاخيرة هي الافضل بل تجب اذا تم توزيع الواجهات على اكثر من جهاز .. والسبب ان كل جهاز سيكون له رقمه الخاص هذا ما لدي آمل تجدوا فائدة 4
عمر ضاحى قام بنشر سبتمبر 24, 2023 قام بنشر سبتمبر 24, 2023 (معدل) وممكن ان يقوم المبرمج بغلق القاعدة الخلفيه والاماميه بكلمات سر ويعمل قاعدة ثالثه لتشغيل القاعدة الاماميه بالاعتماد على هذا الكود كود اخفاء الاكسيس او اظهارها (اختياري ومش هتفرق وجودها) Option Compare Database Option Explicit #If VBA7 Then Public Declare PtrSafe Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long #Else Public Declare Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long #End If '---------------------------------------------------(يخفي الشاشة بتصغيرها للأسفل ولكنها تظهر إذا عملت ماكسيمايز) Public Function HideAccess() Call ShowWindow(Access.hWndAccessApp, 2) End Function '---------------------------------------------------(لإظهار شاشة الأكسس) Public Function ShowAccess() Call ShowWindow(Access.hWndAccessApp, 9) End Function كود تشغيل قاعدة البيانات الاخري Private Sub Form_Load() Call HideAccess Dim acc As Access.Application Dim db As DAO.Database Dim strDbName As String strDbName = CurrentProject.Path & "\" & "FFFF" & ".accdb" Set acc = New Access.Application acc.Visible = True acc.OpenCurrentDatabase strDbName, False, "1234" Set db = acc.CurrentDb() acc.UserControl = True Application.Quit End Sub على فرض ان القاعدة الاماميه باسم FFFF وان كلمة السر هي 1234 ويقوم باغلاق القاعدة الثالثه بتحويلها الى accde وبكده اعتقد هتكون الحمايه عاليه جدا وهيكون صعب كسر كلمة السر تم تعديل سبتمبر 24, 2023 بواسطه عمر ضاحى 3
عمر ضاحى قام بنشر سبتمبر 24, 2023 قام بنشر سبتمبر 24, 2023 وهذه لتوضيح الفكره يفضل ان يكون المجلد فى حرف D علشان يكون مسار البرنامج هو D:\DB\Start.accde لتجنب اخطأ الربط DB.rar 3
ابوخليل قام بنشر سبتمبر 24, 2023 الكاتب قام بنشر سبتمبر 24, 2023 شكرا لك استاذ عمر على المداخلة واحسنت في عرض هذه الفكرة ، وطريقة تنفيذها .. ويعتبر هذا العمل زيادة عالية في حماية بيانات العميل . 1 1
رولي قام بنشر سبتمبر 24, 2023 قام بنشر سبتمبر 24, 2023 جميل جدا شكرا لكم لكن هناك مشكلة طالما بنتكلم عن عمل (دوال ومعادلة)، يبقى كده المبرمج بيستخدم (الجداول) في حماية البرنامج. وطبعا الجداول لا يمكن حمايتها كما قال في أول الكلام بمجرد كسر البرنامج عن طريق Hex والوصول للجدول، هيتم معرفة الدالة والمعادلة ويغير كيفما شاء ما رأيكم؟
عمر ضاحى قام بنشر سبتمبر 24, 2023 قام بنشر سبتمبر 24, 2023 24 دقائق مضت, رولي said: جميل جدا شكرا لكم لكن هناك مشكلة طالما بنتكلم عن عمل (دوال ومعادلة)، يبقى كده المبرمج بيستخدم (الجداول) في حماية البرنامج. وطبعا الجداول لا يمكن حمايتها كما قال في أول الكلام بمجرد كسر البرنامج عن طريق Hex والوصول للجدول، هيتم معرفة الدالة والمعادلة ويغير كيفما شاء ما رأيكم؟ لا اعتقد ان هيكون الموضوع بهذه السهوله اذا كانت قاعدة البيانات من النوع ACCDE (القاعدة التى سوف تفتح البرنامج "الواجهه") فهنا استحالة انه يوصل للكود حتى لو معه الباسورد ^_^ (عارف ان مفيس مستحيل لكن على الاقل هذا يتطلب مستوي عالى جدا من الخبره) وبما ان الواجهه نفسها مغلقه بكلمة سر (معقده) والخلفيه مغلقه بكلمة سر معقده ايضا فهيكون من شبه المستحيل كسرها والله اعلم 2 1
شايب قام بنشر سبتمبر 24, 2023 قام بنشر سبتمبر 24, 2023 في 23/9/2023 at 12:08, ابوخليل said: عندما يرسل العميل رقم السيريل ويطلب رقم النسخة نقوم بعمل المعادلة ومن ثم نرسلها للعميل نتيجة هذه المعادلة ستبقى ملك دائم لجهاز حاسب واحد ما دام على قيد الحياة موضوع يهم شريحة كبيرة من مرتادي الموقع وجهد كبير من اساتذنا الكبار ابو خليل وضاحي بما اني مبتدئ وغير متخصص فاعتقد وبناء فهمي القاصر ان هناك حمايتان في ثنايا الموضوع حماية للبيانات من اي تعديل او حذف او اضافة او استعلام غير مصرح به والحماية الاخرى تتعلق بمنع نسخ البرنامج او الاستفادة منه لغير المصرح لهم اخيرا اعتقد ان بعض مصممي البرامج يهتم بموضوع الحماية الثانية اكثر من اهتمامه بتصحيح الاخطاء او اختبار البرنامج بشكل مكثف قبل بيعه وبالذات البرامج التي تحتوي على اكواد من كل بحر قطرة مع تمنياتي للجميع بالتوفيق اخونا الشايب 1
ابوخليل قام بنشر سبتمبر 24, 2023 الكاتب قام بنشر سبتمبر 24, 2023 5 ساعات مضت, رولي said: جميل جدا شكرا لكم لكن هناك مشكلة طالما بنتكلم عن عمل (دوال ومعادلة)، يبقى كده المبرمج بيستخدم (الجداول) في حماية البرنامج. على اعتبار اننا نتكلم عن حماية التصميم .. ليتك قرأت ما كتبته بتمعن .. ابدا لا دخل للدوال والمعادلات بالجداول .. وممكن الجداول مفتوحة بدون حماية ، وازيدك من الشعر بيت .. تستلم مفتاح التسجيل ملكا لك مدى الحياة ، ولكنك لن تتمكن من نقل البرنامج الى كمبيوتر آخر وتشغيله 1 1
ابوخليل قام بنشر سبتمبر 24, 2023 الكاتب قام بنشر سبتمبر 24, 2023 16 دقائق مضت, شايب said: ان هناك حمايتان في ثنايا الموضوع حماية للبيانات من اي تعديل او حذف او اضافة او استعلام غير مصرح به والحماية الاخرى تتعلق بمنع نسخ البرنامج او الاستفادة منه لغير المصرح لهم وحماية ثالثة .. ان يحميك الله من كل سوء ، ويطيل عمرك على طاعته 4 1
Eng.Qassim قام بنشر سبتمبر 24, 2023 قام بنشر سبتمبر 24, 2023 6 ساعات مضت, ابوخليل said: ان يحميك الله من كل سوء هي الحماية الاولى والاخيرة..بارك الله فيك استاذنا ابو خليل وجزاك الله الجنة لما تقدمه مع جميع الاخوة من علم نافع
رولي قام بنشر سبتمبر 26, 2023 قام بنشر سبتمبر 26, 2023 شكرا جزيلا لكم معلش سؤال كي تتضح لي الصورة: المعادلة اللي باعملها عندي، لازم تكون موجودة في (استعلام) مرتبط بجدول داخل البرنامج؟
عمر ضاحى قام بنشر سبتمبر 27, 2023 قام بنشر سبتمبر 27, 2023 15 ساعات مضت, رولي said: شكرا جزيلا لكم معلش سؤال كي تتضح لي الصورة: المعادلة اللي باعملها عندي، لازم تكون موجودة في (استعلام) مرتبط بجدول داخل البرنامج؟ الطرق كثيره وكل واحد وطريقته لكن فى الغالب ممكن بدل ما تعمل استعلام ممكن تستخدم اكواد السيكول داخل الاكواد افضل حتى يصعب الوصول للجدول واكوادك المهم انك تتخيل الية العمل وتحاول تجد افضل الطرق للتنفيذ والاكثر فاعليه 1
رولي قام بنشر سبتمبر 27, 2023 قام بنشر سبتمبر 27, 2023 شكرا جزيلا أخي عمر، ربنا يجعله في ميزان حسناتك
tiger wanted قام بنشر سبتمبر 28, 2023 قام بنشر سبتمبر 28, 2023 مع احترامى للجميع افضل شيء هو عمل ربط بين واجهة اكسس وسيكوال سيرفر اكسبريس فهذا افضل حل بأن نتعامل مع واجهات اكسس المميزة وقاعدة بيانات سيرفر سيكوال القوية ولكم جزيل الشكر
ابوخليل قام بنشر سبتمبر 28, 2023 الكاتب قام بنشر سبتمبر 28, 2023 33 دقائق مضت, tiger wanted said: مع احترامى للجميع افضل شيء هو عمل ربط بين واجهة اكسس وسيكوال سيرفر اكسبريس فهذا افضل حل بأن نتعامل مع واجهات اكسس المميزة وقاعدة بيانات سيرفر سيكوال القوية ولكم جزيل الشكر نحترم فكرتك .. في الأصل أكسس لم تصنعه ميكروسوفت ليستفاد منه كتوزيع تجاري ، كما هو الحال في اللغات البرمجية الأخرى وتطبيقاتها وانما عملته لخدمات المكتب وتستفيد منه المؤسسات الصغيرة في اعمالها ، مثله مثل اكسل والوورد وبقية المجموعة ,, لاحظ ان معالج اكسس يصنع مشروعا كاملا بضغطة زر . فاذا ارتقينا الى قواعد سيكوال سيرفر فالافضل الارتقاء الى لغات برمجية ارقى وافضل ، والواجهات فيها لا تقارن بواجهات اكسس المحدودة . ما يميز اكسس سهولة ويسر العمل عليه وسرعة التنفيذ ... فما يتم تنفيذه على اكسس في يوم .. سيأخذ قرابة الشهر على اللغات الأخرى والسبب ان القوالب جاهزة في اكسس ولا تحتاج بناء من الصفر 1
Eng.Qassim قام بنشر سبتمبر 28, 2023 قام بنشر سبتمبر 28, 2023 في 23/9/2023 at 12:08, ابوخليل said: لاعتماد على رقم سيريال واحد من عتاد الجهاز ( قرص صلب / معالج / اللوحة الأم ) شخصيا قمت بالاونة الاخير استخدام ال IP للحاسوب ليمنع النسخ لحاسوب ثاني طبعا هذا اذا كانت القاعدة غير مقسمة الى عدة اجهزة بعد فتح النموذج ..حاول تغيير رقم السيريال يدويا في الجدول IP.rar
ابوخليل قام بنشر سبتمبر 28, 2023 الكاتب قام بنشر سبتمبر 28, 2023 2 ساعات مضت, Eng.Qassim said: شخصيا قمت بالاونة الاخير استخدام ال IP للحاسوب ليمنع النسخ لحاسوب ثاني طبعا هذا اذا كانت القاعدة غير مقسمة الى عدة اجهزة بعد فتح النموذج ..حاول تغيير رقم السيريال يدويا في الجدول جميل جدا .. تمت التجربة .. يوجد ثغرة وهي اذا الجدول خالي يتم فتح النموذج بمعنى يمكنني افراغ الجدول وتشغيل الفورم على اي جهاز وانت ايضا لا يمكنك وضع قيمة في الجدول عندما ترسله لي لأنه سيجد قيمة مغايرة ولن يعمل
Eng.Qassim قام بنشر سبتمبر 28, 2023 قام بنشر سبتمبر 28, 2023 33 دقائق مضت, ابوخليل said: يوجد ثغرة وهي اذا الجدول خالي يتم فتح النموذج بالتأكيد استاذ ابو خليل ..النموذج يفتح حينما يكون الجدول فارغ ..لانه سيلصق ال IP للحاسوب في الجدول حينما يتم نسخه الى حاسوب ثاني سوف لن يشتغل ..لانه سيقارن بين IP الموجود في الجدول مع ال IP للحاسوب الجديد بالمناسبة ..السطر الاول المفروض يكون هكذا ..حب ما اعتقد ارجوا منك استاذي ان تشرح لي الثغرة If DCount("[IpAddress]", "tblLog") = 0 Or DLookup("[IpAddress]", "tblLog") = Null Then
ابوخليل قام بنشر سبتمبر 29, 2023 الكاتب قام بنشر سبتمبر 29, 2023 صحيح لن يعمل في الاجهزة الأخرى عند نقله . ولكي يعمل يلزم مسح القيمة من الجدول .. وهذه هي الثغرة .لمن عرف سر الحماية ما رأيك لو عملنا عرقلة للمعتدي بحيث لو عمل على افراغ الجدول لن يعمل معه الا بادخال كلمة السر بما يشابه هذا : If IpAddress = DLookup("[IpAddress]", "tblLog") Then Exit Sub End If Dim mypass mypass = "123" str_Title = "الرقم السري مطلوب" str_Prompt = "ادخل الرقم السري" If InputBox(str_Prompt, str_Title) = mypass Then If DCount("[IpAddress]", "tblLog") = 0 Then Call LogIpAddress Exit Sub End If Else MsgBox "لاتملك الصلاحية" DoCmd.CancelEvent DoCmd.Quit End If IP2.rar
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.