بتاريخ: 12 مارس 200718 سنة comment_93740 السلام عليكم و رحمة الله وبركاته إخواني الكرام إليكم تريجر يمنع الدخول علي قاعدة البيانات من بنامج معين مثلا الSQL PLUSاو الTOADأو غيره و يمكن التعديل فيه لاستثناء مستخدمين معينين او لتغيير البرنامج او لاضافة برامج اخري اليكم الكود create or replace trigger restrict_login after logon on database -- after logoff on database -- after servererror on database -- after startup on database -- after shutdown on database -- after create on database -- after drop on database -- after alter on database declare flag number := 0; begin select 1 into flag from sys.v_$session where lower(program) like '%sqlplus%' and rownum=1; if flag = 1 then raise_application_error(-20000, 'No access from sqlplus'); end if; end; / show errors و كما نري ايضا هناك امثلة للتريجرز علي مستوي قاعدة البيانات غير تريجر AFTER LOGON و الاسكربت في الملف المرفقملحوظة :التريجر تم تجربته علي اصدار 9i و لم يعمل علي اصدار 10 g مع تمنياتي بالتوفيق PREVENT_LOGON.TXT تقديم بلاغ
بتاريخ: 15 مارس 200718 سنة comment_93984 يمكن تجاوز هذا التريجر بكل سهولهعن طريق تغيير اسم الملف sqlplus إلى اي اسم آخر تقديم بلاغ
بتاريخ: 18 مارس 200718 سنة كاتب الموضوع comment_94200 السلام عليكم و رحمة الله و بركاته الأخت AZAمشكورة لملاحظتك يمكن تطوير التريجر ليتم استخدامه لفرض الدخول الي البرنامج عن طريق الفورم فقط و سيكون عملي عند العمل علي فورمز بدءا من 9i حيث تكون بيئة العمل عن طريق APPLICATION SERVERو كل المستخدمين يقوموا بالدخول عن طريقه و إسم البرنامج الذي يقوم بعمل رن للفورم هو IFWEB90.EXE و يمكن التطوير لمنع الدخول من اي برنامج اخر الا هذا البرنامج و الذي لن يكون متاح تغيير اسمه للمستخدمين بل لمديري النظام فقط و يمكن أيضا استثناء مستخدمين معينين هم مطوري النظام بحيث يمكنهم استعمال البرامج الأخري مع حصر البرامج التي تقوم بعمل اتصال علي قاعدة البيانات الضرورية لعمليات اخري مثل ويب سايت او غيره ووضعها في الاكسبشنز لم يتم تجربة ذلك بعد و سأقوم بتجربة و ارسل التطوير للتريجر لاحقا الأخ omar-alreyati معنى if flag = 1 انه في السيليكت نقوم باختيار القيمة 1 من جدول sys.v_$session و هو الجدول الذي يحتوي علي جلسات الاتصال الخاصة بمستخدمي قاعدة البيانات و بياناتها بناء علي اسم البرنامج وهو هنا الSQL PLUS فان كان الاتصال من هذا البرنامج سيكون الFLAG=1 لانه يوجد بيانات اما ان كان البرنامج ليس الSQL PLUS فقيمة الFLAG لن تكون واحد بل ستكون null و لن يتم استكمال الاإجراءات تحت الشرط بالتوفيق تقديم بلاغ
بتاريخ: 19 مارس 200718 سنة comment_94280 شكرا لردكلكن ايضا ملاحظتك يمكن تجاوزها بكل سهولهلو فرضنا انك تسمح لدخول IFWEB90.EXE فقط فبكل سهوله يمكن تغيير sqlplus أو toad .... الى IFWEB90.EXEعلى فكره انا ايضا ابحث عن حل هذه المشكله منذ فتره طويله ولم أجد الحل .. وبانتظار ردكشكرا تقديم بلاغ
بتاريخ: 19 مارس 200718 سنة كاتب الموضوع comment_94297 السلام عليكم ورحمة الله و بركاته الأخت الكريمة AZA يمكن إضافة شرط أخر في التريجر بحيث يمنع الدخول من اي برنامج اخر غير IFWEB90.EXE كما أشرت سابقا و هو إضافة الTERMINAL و التي تحمل دائما إسم جهاز الAPPLICATION SERVERفي حالة العمل علي الويب و في هذه الحالة لن ينفع تغغير إسم البرامج الأخري مثل الTOAD او الSQL PLUS الي IFWEB90لاأنه حتي و ان تم تغيير إسم البرنامج مثل الtoad الي ifweb90فعند الاتصال من اي جهاز اخر غيرالapplication serverسيحمل عمود الterminalإسم الجهاز الذي تم الاتصال منه و ليس إسم ال application serverو في هذه الحالة لن يمكنه اتمام الاتصال و قد قمت بتجربة ذلك بنفسي كما ترين في الصورة المرفقة فالجزء المظللهو عبارة عن اتصال من الtoad بعد تغيير اسمه الي ifweb90ولكن نري ان اسم الجهاز المتصل منه يختلف عن اسم جهاز الapplication server و الواضح في باقي الاتصالات و بهذه الطريقة اذا عدلنا الشرط الي باضافة إسم الجاهز المتصل منه اليه لن يكون بامكانه الاتصال أتمني ان يكون هذا حلا وافيا لكيمع تمننياتي بالتوفيق تقديم بلاغ
بتاريخ: 2 أبريل 200718 سنة comment_95797 i create the trigger in sys schme but when i logon from any client ,the sqlplus program is connected تقديم بلاغ
بتاريخ: 3 أبريل 200718 سنة comment_95860 I create the trigger on database9i,the trigger is runbut when I create the trigger on the database10gand insert the followning code in last trigerto sure is the trigger is run or noEXCEPTION WHEN OTHERS THENn1:= substr(SQLERRM, 1, 200);insert into trg_error values (n1);but I logon to database10g by sqlplusw.exe programthe result is:Connected to:Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsnote:after logon to database10g ,i make query from [trg_error] tablethe resultSQL> select * from pp1;--------------------------------------------------------------------------------ORA-20000: No access from sqlplus تقديم بلاغ
بتاريخ: 3 أبريل 200718 سنة كاتب الموضوع comment_95883 السلام عليكم أخي الكريم لقد جربت التريجر علي 10g ووجدت انه لا يعمل معها لاني كنت قد جربته من قبل في ال9i و اشتغل بنجاح يبدو انه لا يعمل مع مع اصدار ال10gبالتوفيق تقديم بلاغ
بتاريخ: 4 أبريل 200718 سنة comment_96014 التريجر يعمل على 10g فقط قم بهذا التعديلSELECT 1 into flag FROM sys.V_$SESSION WHERE lower(program) like '%sqlplus%' and audsid = USERENV('SESSIONID'); تقديم بلاغ
بتاريخ: 5 أبريل 200718 سنة comment_96119 جزاكم الله خير بالنسبة للتريجر فقد نفذ بعض المستخدمين في القاعدة كانت لهمصلاحية الdbaلذلك كان التريجر لا ينفذ تقديم بلاغ
بتاريخ: 5 أبريل 200718 سنة comment_96152 الأخ هاني سند التريجر يعمل على الأصدارين اثناء التجربة في الأصدار 10g لم يتنفذ ثم قمت بالأتصال بالمستخدم sys ونفذت التريجر واشتغل معي 100% الرجاء التجربة من جديد ومشكور تقديم بلاغ
بتاريخ: 5 أبريل 200718 سنة كاتب الموضوع comment_96153 أخ sky informationالتريجر لم يعمل علي ال10g بصرف النظر عن عن المستخدم فقد جربته في الكل و لكن لم اجرب بعد بعد إضافة الأخت aza و لكن اعتقد انه سيعمل كما اوضح الأخ samoracle و هناك نسخة اخري من التريجر عندي سأضعها هنا ان شاء الله بالتوفيق تقديم بلاغ
بتاريخ: 11 فبراير 200818 سنة comment_122235 كيف يمكن استخدام التريجر لمنع الدخول الى قاعدة البيانات من خلال builder 6i تقديم بلاغ
بتاريخ: 11 فبراير 200818 سنة comment_122247 كيف يمكن استخدام التريجر لمنع الدخول الى قاعدة البيانات من خلال dev 6i تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.