• 0
عمر باعقيل

الامن في البرامج المصممه بالOracle Developer

سؤال

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

الاخوه الافاضل

رمضان كريم وكل عام وانت بخير

سوف نبدء موضوع جديد وهو عن الامن في البرامج التى

يتم انشاءها بواسطه اوراكل ديفلوبرالاصدار 6 و6i .

وكيفيه التحكم بالمستخدمين وتوزيع الصلاحيات وتنفيذها .

طبعا الموضوع مرتبط بالMenu مباشره يعني حيكون الموضوع

فيه شرح لكيفيه عمل Menu وعمل نظام امن للبرنامج

ايضا الموضوع له صله مباشره في الRoles و الPrivlieges,

كيفيه انشائها ومنحها وسحبها والكثير من المواضيع الاخري .

يعني الموضوع دسم كثير جدا وان شاء الله تكون الفائده اكثر .

ينقسم الموضوع الى نوعين "من وجهه نظري" :-

1- عدم اتصال المستخدمين فعليا بقاعدة البيانات اي فعليا يتصلوا

بحساب واحد فقط " لايوجد الا حساب واحد للبرنامج فعليا ".

2- كل مستخدم للبرنامج يكون له حساب فعلي ويتصل فعليا

بقاعدة البيانات عند استخدامه للبرنامج .

طبعا كل نوع من النوعين السابقين له مؤيديه ومعارضيه

انا أؤيد النوع الثاني لقوه التحكم والامن به ويمكن من عيوب هذا

النوع هذا انه يكلف اكثر واكثر تعقيدا للمبرمج عن النوع الاول .

ارجوا من الاخوان التفاعل مع الموضوع

لنبدء بالعمل والتنفيذ الفعلي لعمل مثال شامل

عن موضوع الامن في البرامج المصممه بواسطه

ال Oracle developer 6 or 6i

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

عمر باعقيل

كندا - مونتريال

[email protected]

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

43 إجابة على هذا السؤال .

  • 0

الأخ عمر باعقيل

أولاً الف مبروك على الاشراف

الموضوع جيد

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

1- أن المستخدم الذي يدخل سجلات في الشاشات ويخزنها في الديفلوبر بواسطة أزرار أو ... معينة له الحق أيضاً في ادخال هذا السجل عن طريق sql Stetement .

2- اجراء توثيق Auditing بحركات المستخدم وجعل الأوراكل يقوم بذلك ... قد يقول قائل ممكن أن نسوى التوثيق حتى في حالة المستخدمين الوهميين با ستخدام جداول اضافية ... أعرف هذه الفكرة ولكني أرفضها قطعاً لأن فيها كود وجداول و OVERHEAd زيادة

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

4- يمكن تغيير خصائص الجلسة لكل مستخدم خسب ما يروق للمستخدم ...

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

وكنت أفضل قبل الشروع في هذا الموضوع شرح الصلاحيات في أوراكل لمن يجهلها فهي بالفعل ممتعة و رهيبة

وان شاء الله لاحقاً سأكتب درس بسيط عن تصميم نموذج يعتمد على (المستخدم الحقيقي) ..

حمود الحطامي

صنعاء

[email protected]

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

الاخ حمد المهندس شكرا لك

الاخ حمود الحطامي شكرا لك واتمنى انك تقوم بشرح

الصلاحيات في أوراكل لنا جميعا وفعلا كما ذكرت يجب

ان يتم ذلك اولا والحمد لله وجدنا اول المبتدئين بالشرح

وان شاء الله كلنا معاك

عمر باعقيل

كندا - مونتريال

[email protected]

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

موضوع هام جدا جدا جدا للجميع

وفقكم الله وكل عام وانتم بخير

ونحن في الانتظار

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

تحياتي للجميع

اعود اليكم بعد غيبه ......

اشتقت لكم كثيرا ......

هذا الموضوع مهم جدا حيث يتم من خلاله تحديدطريقة الحماية المعتمده في النظام أو المؤسسه التي سيتم تنفيذ النظام فيها.

بالنسبه لي شخصيا .... افضل ان يكون هناك

حساب(oracle user ) واحد رئيسي تنزل عليه كافة الجداول .

ومن ثم عمل لكل مستخدم حساب(oracle user ) له صلاحيه على هذه الجداول .... الموجده في الحساب الرئيسي.

مع الاخذ بعين الاعتبار التنسيق بين البرامج وهذه الصلاحيات...

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

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

وشكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الاخوة فى المنتدى

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

اظن ان المادة المطروحة جيدة وهى السرية على مستوى التطبيق اذا صح التعبير وفهمت ان هنالك تقسيم كالاتى:

1-oracle user defined

يعنى ان يكون لكل مستدم oracle user واظن ان هذه الطريقة تمكن من استخدام امكانات الاوركل للسرية من متابعة للمستخدم وتحكم وحفظ بياناته.

2-user user defined

وهو ان تنشى مستخدم واحد وعليه تبنى نظامك الخاص للسرية من مستخدمين و جداول وغيره.

ارى ان الطريقة الاولى هى الارجح ولكن هناك شركات كبرى تعتمد الطريقة الثانية ياترى ماالسبب وهل له علاقة بالترخيص من شركة اوركل !!!!!!!!!!!!!!

السرطه

السودان

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يبدو اني ح اتفق مع الاخ العائد (النبع). واسبابي هي الآتي

  1. في حالة وجود نظام ضخم بعدد من المستخدمين، ستجد ان عليك القيام بتكوين عدد ضخم من ال Oracle Users وبالتالي اعطاء الصلاحيات اللزمة لهم، وكلما زاد العدد، كلما زاد التحميل على الاوراكل ومصادر السيرفر، إذا هذا النظام يفضل في حالة النظم الصغيرة اكثر منها في الكبيرة
  2. صحيح ان في هذه الحالة فان السيطرة تكون على مستوى الاوراكل، ولكن هنا عيوب، فكل من يتمكن من الدخول في قاعدة البيانات بمستخدم له الصلاحية الكافية، فإنه يتمكن من عمل مستخدم جديد بكامل الصلاحيات حتى وهو خارج النظام
  3. كثرة مستخدمي الاوراكل تحتم عمل الباكب export من على مستوى النظام فقط، حتى تقوم الاوراكل بتصدير كل المستخدمين
  4. قد يكون هناك تغيرات كبيرة في المستخدمين، بسبب التعيين والاستقالات، فإذا كنت تستخدم خاصية المراجعة ِAdit Trail فلن تتمكن من اسقاط المستخدمين حتى ولو استقال الموظف، في حين انه في النظام الاخر، يمكنك تفعيل او عدم تفعيل الحساب
  5. في الحالة الثانية تكون هناك مرونة أكثر اذ يمكنك ان تصمم الصلاحيات بالشكل الذي تراه
    [/list=1]
    بالنسبة للنقطة الاخيرة، فمثلا لدي نظام اسمح فيه لكل مستخدم بالتعامل مع ارقام حسابات معينة، وهو ما لا يمكن عمله في الحالة الأولى،، اقصد ان تعطي الصلاحية على مستوى السجل، وليس الملف كاملا
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الاخ العزيز باعقيل

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

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

1- استخدام مستخدم واحد فقط لاوراكل وعمل جدول للمستخدمين داخلى بالبرنامج ومن ثم يتم التحكم عن طريق Menu في الصلاحيات للمستخدمين لاستخدام الشاشة او التقرير الذى مسموح له بالعمل عليه ، وتعتبر هذه الطريقة بسيطه وسهله وتتبع اسلوب التراك في صفوف الانتظار التى تسمح للمستخدم بان يدخل على عمله فقط ،

2- الاقتراح الثانى بعمل مستخدم على اوراكل نفسها باستخدام الرول والجرانت اعتقد انه يحتاج الي dba اذا كان النظام كبير

3- يوجد خليط بين هذا وذاك ان تفتح القائمة ويتم عمل مستخدمين عن طريق جدول داخل البرنامج ويتم اعطاءه الصلاحيات على جداول النظام والتحكم فيه ببعض Database Trigger ، حيث ان استخدام Database Trigger يفيد في بعض النواحى التى لاتعطيها Grante,Roll مثل مثل عمل تعديل او اضافة للجداول في اوقات غير الدوام مثلا وهكذا...

على العموم اود معرفة رايكم والاستفادة من خبراتكم

وجزاكم الله خيرا. وكل عام وانتم بخير ونسألكم الدعاء

:)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

في الحقيقة انا ماني شايف فرق شاسع من ناحية السرية في كل الخيارات العملية الثانية تأدي نفس الغرض وقياسية وقوية بس يفضل في الطريقة الثانية محاولة تشفير كلمة المرور للمستخدم بأي طريقة تخطر على بال المبرمج

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

الاخ النبع المحترم

اهلا وسهلا بعودتك نورت المكان بوجودك

كل عام وانت بخير و رمضان كريم

الاخ السني المحترم اظن ان الاخ النبع مؤيد لفكره انشاءحساب فعلي لكل مستخدم oracle user defined

كما فهمت من ماتفضل بكتابته في الاعلي ولكن انت تفضل النوع الاخر وهو user user defined .

الاخ taha2000 المحترم - نعم هناك علاقة بالتراخيص في هذا الموضوع فعند شرائك لقاعده بيانات اوراكل يجب ان تحدد عدد المتصلين بها ولكل شي ثمنه طبعا لذلك تقوم بعض الشركات بشراء الحد الادني "5 او 10 متصلين" وتعتمد طريقه ال user user defined في اتصالها بقاعدة البيانات :)

أشكرا للجميع على مشاركتهم الممتازه جدا والى الامام ان شاء الله .

عمر باعقيل

كندا - مونتريال

[email protected]

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

* كبر عدد المستخدمين وتبعاته على القاعدة والتصدير

* التحميل الزائد على القاعدة ومردودات ذلك على الخادم

كما ان أي تغيير في المستخدمين يتطلب مدير للقاعدة متمكن، وهو ما لا يتوفر للعديد من الجهات

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الاخ عمر باعقييل والاخوة فى المنتدى

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

الاخ عمر لقد تفضلت بتوضيح العلاقة بين عدد المستخدمين وسعر المنتج وكل مازاد عدد المستخدمين زاد السعر والامر هنا طبيعى ولكن سؤالى!

كيف يكون حساب عدد المستخدمين? اى السؤال بصورة اخرى اذا تم انشاء واحد مستخدم على قاعدة البيانات وتم الدخول على قاعدة البيانات بنفس المستخدم ولكن من اكثر من جهاز ومن اكثر من تطبيق فكم يكون عدد المستخدمين فى هذه الحالة؟

السر طه

السودان

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الاخ السر طه والاخوة الاكارم.

آسف لتغيبي بسبب السفر، المهم، بخصوص سؤال الاخ السر طه، فيجب عليك عند شراء منتج الاوراكل ان تحسب عدد المتصلين المتوقع على قاعدة البيانات المنشأة في لحظة واحدة، بغض النظر عن عدد اسماء الاوراكل أو النظم أو اي مما له علاقة بنظامك، فقط احسب العدد المتوقع من المتصلين في نفس اللحظة، وهو ما يسمى بال concurrent user. مثال لذلك، لو كان لديك قاعدة بيانات ومكتب رئيسي ومكتبين فرعيين، في الركتب الرئيسي لديك 10 موظفين، وفي المكاتب الفرعية 5 في كل مكتب، يعمل المكتب الرئيسي في ساعات العمل النهارية، والمكتب الفرعي (أ) يعمل صباحاً،بينما يعمل المكتب (ب) ليلا فقط، وبذلك مجمل الاتصال يكون 20 اتصال،، ولكــــــــــــــن، عدد المتصلين بالنهار هو 15 وبالليل هو 5، أي ان أقصى عدد للمتصلين في لحظة ما هو 15، وهو ما تحتاجه من ترخيص للاتصال بقاعدة البيانات.

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

في محادثة على الماسنجر بيني وبين الاخ عمر باعقيل، تم الاتفاق على ان اقوم انا بشرح الطريقة الثانية user user definition or THE APPLICATION USER ويقوم هو بشرح الطريقة الاولى ORACLE USER DEFINITION

لذا سأقوم هنا بشرح الطريقة الثانية APPLICATION USER DIFINITION ، وهي تقوم على نفس الاساس، ولكن بتكوين المستخدمين من مستوى البرنامج، مع اعطاء الصلاحيات لهم من نفس البرنامج، وبنفس النهج، وكالأتي :-

يجب أولا التفكير في ماهو المطلوب من المستخدمين القيام به، وماذا نريد من انشاء اسماء لهم وماذا سنستفيد من ذلك، وسألخص بعض هذه الاهداف في التالي : -

  • اعطاء المستخدم اسم مميز يتعرف عليه النظام من خلاله باسم مفرد وكلمة سر خاصة ليحدد النظام صلاحيات هذا المستخدم
  • تقسيم المستخدمين لمجموعات تشابه ال ROLES في قاعدة البيانات لتحديد الصلاحيات حسب هذا الرول
  • متابعة القيود والسجلات ومدخل كل قيد او سجل لتحديد المسؤولية
  • تحديد صلاحيات الاضافة والمسح وتأكيد سجل القيد أو أي صلاحية اخرى لتمكين المستخدم منها او حجبها عنه
  • تمكين النظام من اظهار الدوال والقوائم المسموح لهذا المستخدم من التعامل معها فقط
  • تفعيل عملية المراجعة AUDIT TRAIL من مستوى النظام
  • تمكين مسؤول النظام من تفعيل او تعطيل مستخدم معين في النظام وحسب حالة تواجده في المؤسسة او انهاء خدماته او توقيفه عن العمل او في لعطلات السنوية وخلافه

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

جدول القائمة الرئيسية

ويقوم بتحديد اسماء البرامج التي ستعمل في القائمة الرئيسية واسم ظهورها، ويجب ان يحتوي على الحقول للازمة لذلك مثل :-

  • إسم البرنامج، ويوضع فيه الاسم الحقيقي للبرنامج الذي سيتم استدعائه عند الضغط على هذا الخيار (وقد يكون هذا البرنامج قائمة فرعية)
  • عنوان البرنامج، وهو التفصيل الذي سيظهر في الشاشة عند تشغيل البرنامج بدلا عن الاسم الفعلي له
  • نوع البرنامج (قائمة فرعية، ام شاشة تشغيل تقرير او خلافه) وذلك حتى يستطيع البرنامج اعطاء الامر اللازم لطريقة استدعاء البرنامج
  • البرنامج الام (لاحظ اننا في الحقل السابق قمنا بذكر انه قد يكون البرنامج هو قائمة فرعية، لذا يجب معرفة اسم البرنامج الذي سيستدعي هذا البرنامج)
  • ترتيب البرنامج ، وهو عبارة عن متسلسلة عديدة تعبر عن ترتيب البرنامج في القائمة لترتيب ظهور البرامج على الشاشة

جدول مجموعات المستخدمين

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

  • كود المجموعة، وهو اسم مختصر يشار به للمجموعة
  • اسم المجموعة، وهو تفصيل للكود السابق، اي عبارة عن اسم تفصيلي

جدول اعطاء الصلاحيات للمجموعات

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

  • كود المجموعة، ويرتبط بكود المجموعة في جدول المجموعات
  • اسم البرنامج، وهو اسم برنامج وارد في برامج القائمة الرئيسية
  • صلاحية ادخال سجل جديد (Y/N) وهو يفيد ما إذا كان من حق المستخدم ادخال معلومة جديد في هذه الشاشة ام مجرد رؤية السجلات
  • صلاحية تعديل سجل (Y/N) لتمكين او حذف صلاحية تعديل القيود
  • صلاحية الغاء سجل (Y/N)

جدول المستخدمين

ويتم فيه تعريف المستخدم وتعريفه داخل احد المجموعات المعرفة وكالآتي: -

  • معرف المستخدم، وهو اسم الدخول بالنسبة للمستخدم
  • تعريف تفصيلي للمستخدم، وهو حقل لتوضيح فقط
  • الرقم السري
  • رمز المجموعة، وحسب ما هو وراد في جدول المجموعات
  • تعريف برنامج القائمة البدائية للمستخدم، ويستفاد منها في تعريف برنامج معين يكون بداية افتراضية للمستخدم، وذلك حتى يسهل لكل مستخدم بان يبدأ معه النظام من حيث يريد وحسب عمله
  • وهناك العديد من الحقول التي يمكن اضافتها هنا، مثل تمكين المستخدم من تغيير رقمه السري أم لأ،، هل ادخال الكلمة السرية ضروري أم لأ؟ ،، الطابعة الافتراضية لهذا المستخدم ،،،، بعض المعلومات عن التلفون والفاكي ووو ،،، الحد الاقصى المسموح به لعدد الاجهزة المستخدمة لهذا المستخدم في نفس الوقت،، إذا كان البرنامج يتعامل مع عدد من الشركات Multi Company System فيجب تعريف كود الشركة التي يتعامل معها هذا المستخدم ،،، وهكذا

وبهذا، فيمكننا تحديد من هو المستخدم، وماذا له ان يفعل في النظام، وما هي الشاشات التي يسمح له ان يراها، وهل من حقه ادخال بيانات ام مجرد الرؤيا،، و و و و و

إذا لم يكن الامر واضح، فاشيروا علي، وآسف لاني بدات الموضوع امس وكملت عليه اليوم، لأنه ادركني وقت الامساك وانا اكتب في الموضوع. فعذرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الاخ السنى والاخوة الكرام

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

قراءت درسك الاول عن الطريقة user user defined وكان بداية طيبة بحق وارى انك تحتاج لجدول اخر للمستخدمين تبين فيه اسم المستخدم ,وكلمة السر للمستخدم,والمجموعة التى ينتمى لها.هذا اذا جاز الفهم.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

كل عام وانتم بخير و رمضان كريم

الأخ عمر باعقيل

ألف ألف مبروك على الاشراف

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

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

وقد جربت هذه الطريقة وكانت النتائج رائعة جدا ، كما وضعت كذلك توثيق Auditing بالعمليات التي يقوم بها كل مستخدم من إضافة أو تعديل أو حذف والأوقات التي تمت فيها تلك العمليات .

أشكر الأخ عمر والأخ السني وجميع الاخوة لمشاركاتهم المفيدة.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

آسف أخي السر طه، ولكن يبدو اني قمت بالتعديل والتكملة من غير الانتباه لمشاركتك، وملحوظتك صحيحة 100% حسب وضع الشرح في حينه،

أريد ان اضيف هنا، انه في كل القيود وفي كل الجداول يجب اضافة الحقول الآتية

  • حقل مدخل المعلومة، ويؤخذ من اسم المستخدم
  • يوم ووقت ادخال المعلومة، ويؤخذ من تاريخ ووقت السيرفر تلقائيا
  • الجهاز الطرفي الذي استخدم لإدخال المعلومة، ويمكن الاستفادة من ال v$session للحصول على المعلومة
  • نفس الحقول الثلاثة السابقة، ولكن لتسجيل التعديلات على القيد، (المعدل، وقت التعديل والمحطة التي تم منها التعديل)

كل هذه الحقول تضاف تلقائيا لحظة حفظ المعلومة ومن غير استشارة او علم المدخل، ويستفاد منها في عمليات المراجعة لاحقاً

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كل عام والجميع بألف خير

بارك الله في جميع الأخوة على هذا الموضوع الهام.

أنا شخصياً أحتاجه ... وكنت أنتظر مثل هذه الفرصة لأتعلّمه وأستخدمه.

لا تتأخروا علينا ... فالواضح أن الأخوة هنا متمكنين من الموضوع ويبقى عليهم صياغة الشرح .... بوركتم جميعاً.

مع التحية:)

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الاخ السنى

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

جزاك الله خير وضاعف لك الاجر ببركت هذا الشهر إن شاء الله

قراءت الدرس وقد كان جيد ولكن مايزعجنى هو كيف يكون شكل كلمة السر فى جدول المستخدمين وهل ح تستفيد من نظام السرية فى اوركل حتى لا يستطيع ان يطلع عليها احد

تحياتى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

جزاكم الله خيرا على هذه المعلومات القيمة

أصبح الآن لكل وجهة نظر ويستطيع أن يحدد أي الطريقتين أجدى.

في العمل نستخدم طريقة user user definition

مشكلتي هو أنني أضع اختصار للنموذج الرئيسي للبرنامج على سطح المكتب وأعرف فيه userid=user/[email protected]

هذه الطريقة تقلقني كثيرا حيث يستطيع المستخدم أخذ اسم Oracle user والتعامل معه.

لقد بحثت عن كيفية جعل اسم المستخدم وكلمة المرور من داخل النموذج عند التشغيل، وكل ما وجدته لم يكون ذا فائدة.

هل يمكن أن نجعل اسم مستخدم أوراكل الآساسي من داخل النموذج؟؟

شكرا لكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هنا النقطة الضعيفة في ما ذكرنا، إضافة لنقطة أخرى وهي امكانية تغيير اسم المسجل من خلال ال SQL. ولكن يمكن تخطي المشكلة بعمل نظام للترميز حسب ما ترى لإظهار كلمة السر على غير حقيقتها، فمن يراها في القاعدة أو عن طريق select statement لن يستطيع فهم الكلمة الحقيقيى، ودعني اضع لك طريقة قمت بها زمان لإخفاء كلمة السر (باللغة الانجليزية فقط)

  • وضعت جدول يحتوي على 31 سطر و38 عمود
  • تمثل ال31 سطر ايام الشهر،
  • تمثل ال 38 عمود الحروف الابجدية الانجليزية + الارقام + العلامتين ( - _ ) الهايفن والاندر سكور
  • يتم حفظ تاريخ الادخال بشكل تلقائي في أحد الحقول كجزء من عملية الترميز
  • يحتوي السجل الاول من الجدول على الحروف بترتيب عين مع ما ذكرت سابا من علامات وأرقام
  • يحتوي السطر الثاني على نفس المحتويات، ولكن بتحويل مكونات العمود الاول في الاخير، والثاني في الاول والثالي في الثاني وهكذا
  • عند ادخال كلمة سر معينة، يقوم البرنامج بحفظ التاريخ أولا، ثم يستخدم التاريخ لترميز كلمة السر، فاليوم من الشهر هو ما سيحدد رقم السجل الواجب استخدامه للترميز، أما رقم الشهر، فيضاف لرقم الحرف المعين ثم استخدام الحرف صاحب الرقم الجديد،،،
  • مثلا لترميز الحرف (a) في معلومة ادخلت يوم معين من سنة معينة، ولنفترض 14/10/2002، يجب الانتباه أولا الى ان هذا هو الحرف صاحب الترتيب الاول في الترتيب الابجدي، تقوم قاعدة البيانات بالنظر على الحرف الحاي عشر (رمز الشهر + رقم الحرف في الترتيب الابجدي) = 10 + 1، وذلك في السطر الرابع عشر، وقد يكون الناتج أي حرف.
  • عند محاولة الدخول مرة أخرى تقوم قاعدة البيانات بعملية عكسية.
  • يجب مراعاة ان السطور يجب ان تكون في loop اي انه عند الوصول للخانة الاخيرة في حساب السطر، يجب الرجوع للخانة الاولى،، مثلا الخانة رقم 41 = 41 - ((الرقم المطلق لناتج قسمة 41/38) مضروبا في 38 ) = 41 - (1 * 38) = 41 - 38 = 3، إذا نقوم باختيار الحرف الثالث من السطر المحدد

أعتقد اني افشل انسان في الشرح والتعبير عما يدور في ذهني:'(

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

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

والخطوت سوف تكون انشاء جدول للمستخدمين ثم انشاء اجرائين الأول لتشفير كلمة المرور وحفظها في الجدول والثاني سوف يقوم بفك التشفير ....

أولا / لو قمنا بإنشاء جدول للمستخدمن كالتالي :

CREATE TABLE APP_USERS(USERID VARCHAR2(20),

UPASS VARCHAR2(20));

ثانيا / نقوم بإنشاء الإجراءات التالية :

---أول إجراء سوف يقوم بتشفير كلمة المرور وحفظها في الجدول

CREATE OR REPLACE PROCEDURE PASS_ENC(U_NAME IN VARCHAR2,V_PASS_ENCODE IN VARCHAR2)

IS

V_RESULT VARCHAR2(25);

BEGIN

SELECT TRANSLATE(V_PASS_ENCODE, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ',

'[email protected]#$%^&*()-=_+;,.') INTO V_RESULT

FROM DUAL;

INSERT INTO APP_USERS(USERID,UPASS)

VALUES (U_NAME,V_RESULT);

DBMS_OUTPUT.PUT_LINE(V_RESULT);

END;

/

---ثان أجراء سوف يقوم بفك التشفير كلمة المرور وويقوم بإستخدامه مدير النظام لفك تشفير كلمات المرور

CREATE OR REPLACE PROCEDURE PASS_DEC(V_PASS_DECODE IN VARCHAR2)

IS

V_RESULT VARCHAR2(25);

BEGIN

SELECT TRANSLATE(

V_PASS_DECODE,

'[email protected]#$%^&*()-=_+;,.',

'ABCDEFGHIJKLMNOPQRSTUVWXYZ ') INTO V_RESULT

FROM DUAL;

DBMS_OUTPUT.PUT_LINE(V_RESULT);

END;

بعد ذلك يمكننا أضافة المستخدمين كالتالي :

BEGIN

PASS_ENC('MOHAMMED','DEVORA');

END;

لوقمنا بعمل جملة SELECT على الجدول APP_USERS فإن النتيجة سوف تكون :

USERID UPASS

-------------------- --------------------

MOHAMMED 45=%*1

ولفك التشفير نقوم بإستخدام الإجراء الثاني :

BEGIN

PASS_DEC('45=%*1');

END;

والناتج بالطبع كلمة المرور DEVORA .....

ارجوا ان يكون هذا المثال واضح واي سؤال انا جاهز .....

تحياتي للجميع:) :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الطرق كثيرة، وما أردت عرض الكثير منها، حتى لا أحرق أوراق البعض;)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

انا مشكلتي في تنزيل oracle8i مع العلم ان جهازي بانتيوم 4

ما هو راضي يتقبل path الي عنده وانا مني عارف ايش اسوي افيدوني جزاكم الله الف خير ز مع العلم اني سويت الطريقه الي طرحتوها ز وشكرا

اخوكم الموس:cool:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .