ورود

View Full Version : اضافه کردن متن به تمامی Stored Procedureها



کم حوصله
دوشنبه 14 فروردین 1385, 15:28 عصر
با سلام
من می خواهم عبارت with Encryption را به تمامی Stored Procedure ها اضافه کنم لطفا راهنمایی کنید

MMAASS
سه شنبه 15 فروردین 1385, 00:33 صبح
یه کم توضیح بدین.

Kamyar.Kimiyabeigi
سه شنبه 15 فروردین 1385, 08:44 صبح
با سلام
من می خواهم عبارت with Encryption را به تمامی Stored Procedure ها اضافه کنم لطفا راهنمایی کنید
شما قبل از اضافه کردن with encrytion حتما" یک کپی از stored procedure هاتون بگیرین چون وقتی encrypt بشه دیگه به script های آنها دسترسی ندارین

MMAASS
سه شنبه 15 فروردین 1385, 10:42 صبح
دوستان اگه می شه یه توضیح کوچیک در مورد encrypt بدن ممنون می شم.
یعنی جز خود SQL است؟ یا باید براش تابعهای خاص با الگوریتمهای مختلف نوشته بشه؟

Kamyar.Kimiyabeigi
سه شنبه 15 فروردین 1385, 10:53 صبح
دوستان اگه می شه یه توضیح کوچیک در مورد encrypt بدن ممنون می شم.
یعنی جز خود SQL است؟ یا باید براش تابعهای خاص با الگوریتمهای مختلف نوشته بشه؟
with encryption یکی از قابلیتهای sql هست که اگر در stored procedure استفاده کنین دیگه نمیتونین متن داخل اون sp رو ببینید مثال : اول کد 1 رو اجرا کنین و داخل sp رو از Enterprise ببینید و بعد کد 2 رو اجرا کنین و دوباره سعی کنین داخل sp رو ببینید... (دیگه داخل sp دیده نمیشه)

کد 1 :


CREATE PROCEDURE [dbo].[test]
AS
PRINT('a')
GO


کد 2 :


ALTER PROCEDURE [dbo].[test]
WITH ENCRYPTION
AS
PRINT('a')
GO

MMAASS
سه شنبه 15 فروردین 1385, 11:56 صبح
چه جالب بود.
پس اینا رو SQL با الگوریتم خودش رمزنگاری می کنه.
ببخشید قابلیت Decrypt هم داره؟

Kamyar.Kimiyabeigi
سه شنبه 15 فروردین 1385, 12:24 عصر
چه جالب بود.
پس اینا رو SQL با الگوریتم خودش رمزنگاری می کنه.
ببخشید قابلیت Decrypt هم داره؟
خیر. برای همینه که میگم قبل از استفاده از encrypt از script تون یک کپی بگیرید

h_baqery
سه شنبه 15 فروردین 1385, 17:23 عصر
ساده ترین راه برای این کار استفاده از جداول سیستمیه به این صورت :
1 - حتما قبلا backUp بگیرید
2 - یه بار دیگه یک backup دیگه بگیرید
3 - در قسمت properties سرور در enterprise manager در پنل server settings در قسمت server behavior قسمت .....allow motification to be رو تیک بگزارید.
4 - یک view بسازید از جدول syscomments فقط رکوردهایی که id آنها در select از جدول sysobjects جاهایی که xtype برابر P باشند وجود داشته باشد.
5 - فیلد status از این view رو با مقدار( 1 )Update کنید
6 - حالا تمام پروسیجرهای شما encrypt شده و قابل بازیابی نیستند.
نکته : من از کسی شنیدم که برنامه ای هست که پروسیجرهای کد شده رو باز می کنه ولی خودم ندیدم.

کم حوصله
چهارشنبه 16 فروردین 1385, 13:38 عصر
3 - در قسمت properties سرور در enterprise manager در پنل server settings در قسمت server behavior قسمت .....allow motification to be رو تیک بگزارید.

نکته : من از کسی شنیدم که برنامه ای هست که پروسیجرهای کد شده رو باز می کنه ولی خودم ندیدم.

اگر گزینه 3 را اعمال کنیم کدها در اینترپرایز کد شده هستند ولی در کوئری آنالیزر دیکد شده، یعنی راحت قابل بازیابی هستند!

پس اون تیک را نباید زد!!!!!

اگر دستورات ما بیش از یک رکورد ذخیره شوند!! رکوردهای 2 به بعد کد می شوند ولی رکورد اول قابل روئیت می باشد

h_baqery
چهارشنبه 16 فروردین 1385, 14:14 عصر
دوست عزیز منظورتون رو متوجه نمی شم
چون که شما دارید روی جداول سیستمی تغییر ایجاد می کنید مجبور به زدن اون تیک هستید وگرنه sqlبه شما اجازه update فیلد status رو نمیده
من این کار رو انجام دادم و پروسیجرم از هیچ جا قابل بازیابی نبود
البته بعد از اتمام کار باید دوباره تیک رو بردارید
تنها راه بازیابی برگرداندن فیلد status به حالت قبل است

h_baqery
چهارشنبه 16 فروردین 1385, 14:17 عصر
اگر نمی خواهید از این روش استفاده کنید باید برنامه ای بنوسید که روی script کلیه پروسیجرهای شما حرکت کنه و بین create و as عبارت with encryption رو اضافه کنه

Kamyar.Kimiyabeigi
چهارشنبه 16 فروردین 1385, 14:31 عصر
تنها راه بازیابی برگرداندن فیلد status به حالت قبل است
یعنی با این کار عمل Decrypt صورت میگیره ؟

h_baqery
چهارشنبه 16 فروردین 1385, 15:33 عصر
اگر با عبارت with encrption کد شده باشه فقط با نرم افزارهای خاص می شه.
اگر با روشی که گفتم کد کنید هرکسی نمی تونه برشگردونه ولی اگر همون روال رو برعکس انجام بدید یعنی فیلد status رو با 2 update کنید دکد می شود البته در هردو روش متن پروسیجر قابل دیدن نیست.

ama55555
چهارشنبه 16 فروردین 1385, 20:10 عصر
با چه نرم افزار های خاصی می شه بازیابی کرد ؟

کم حوصله
شنبه 19 فروردین 1385, 12:17 عصر
آقا اون جمله تعجبی بود نه اخباری. بدلیل اینکه اگر یکبار اون تیک را زده باشی خیلی راحت اجازه اصلاح کردن را برای دفعات بعد می دهد حتی اگر اون تیک را بردارید.

ضمنا اون پروسیجر زیادی Encript می شه چون دیگه خود Sql هم نمی خونه یعنی خطا می دهد

h_baqery
یک شنبه 20 فروردین 1385, 14:16 عصر
من با این روش کار می کنم و هیچ مشکلی هم نداره و همه پروسیجرهام اجرا می شوند شما اگر یک پروسیجر که با with encryption کد شده باشه بخواهید با این روش برگردونید اون اتفاقی که گفتید می افته و پروسیجر شما نا خوانا می شه که البته با برگردوندن فیلد status به عدد صفر مشکل حل می شه .
در مورد تیک allow motification to be made directly to the system catalogs اگر باشد اجازه تغییر در جداول سیستمی رو دارید و اگر نباشد اجازه تغییر نمی دهد.