دسته بندی ها
16:43 1401/04/08

ایجاد امنیت و رمزنگاری کردن Stored Procedure در Sql Server

مشخصات سوال کننده :
کاربر : hamdola     امتیاز کاربر : 121     رتبه کاربر : 12
دسته بندی : Sql Server

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2997
پاسخ دهنده : fateme 16:58 1401/04/08

امنیت در Stored Procedure در Sql Server

بله شما میتونید با استفاده از دستور With Encryption در Sql Server کدهای خودتون رو قفل گذاری کنید و به عبارتی مخفی کنید.

 

آموزش استفاده از دستور With Encryption برای رمزنگاری اطلاعات

خب برای اینکه بدونید دقیقا چجوری باید اسکریپت های خودتون رو رمزنگاری کنید یک مثال انجام میدیم. فرض کنید یک Procedure خیلی ساده دارید. اسکریپت زیر این پراسیجر رو برای ما به وجود میاره :

CREATE PROCEDURE dbo.GetGroupById @id int
WITH ENCRYPTION
AS
SELECT * FROM dbo.GroupTbl
WHERE GRoupID = @id;

همون طوری که میبینید بعد از اینکه پارامتر ورودی Procedure تعریف شد و قبل از کلمه کلیدی As از عبارت With Encryption استفاده کردیم. خب حالا اگر این پراسیجر رو ایجاد کنیم مشاهده می کنیم که در لیست Procedure ها یک علامت قفل روی اون قرار گرفته.

امنیت در sql server

 

می بینید که پراسیجر شما به وجود اومده و یک علامت قفل روش هست. حالا اگر روی نام این پراسیجر کلیک راست کنید مشاهده می کنید که گزینه Modify غیر فعال هست. یعنی دسترسی به اسکریپت وجود نداره.

مخفی کردن کدها در sql server

 

اما یک نکته. ما برای اینکه بتونیم به کدهای یک پراسیجر دسترسی داشته باشیم علاوه بر اینکه می تونیم روی نام پراسیجر کلیک راست کنیم و گزینه Modify رو بزنیم می تونیم از دستور زیر هم استفاده کنیم :

EXEC sp_helptext 'GetGroupById';

اما با اجرای دستور بالا با پیغام زیر مواجه میشید:

The text for object 'GetGroupById' is encrypted.

پس خیالتون راحت باشه که دیگه کدهای شما رو کسی نمیتونه دسترسی داشته باشه.

 

حذف With Encryption از Stored Procedure

شما به راحتی میتونید با استفاده از دستور Alter و حذف دستور With Encryption پراسیجر رو به حالت معمولی برگردونید:

Alter PROCEDURE dbo.GetGroupById @id int
AS
SELECT * FROM dbo.GroupTbl
WHERE GRoupID = @id;

 

نکته : دقت کنید که اسکریپت هایی رو که قصد دارید به صورت انکریپت شده تبدیل کنید حتما پیش خودتون نگهداری کنید تا اگر نیاز بود در پراسیجر تغییری بدید (با استفاده از دستور Alter) به مشکل نخورید و فقط یک بار Alter  رو اجرا کنید.

ویرایش شده در چهارشنبه 8 تیر 1401 ساعت 17:05:06
به این پاسخ امتیاز بدهید    1
امتیاز: 1617 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود