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

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

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

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3051
هوش مصنوعی

پاسخ هوش مصنوعی

بله، در SQL Server می توانید از قابلیت رمزنگاری برای محدود کردن دسترسی به کدهای Stored Procedure استفاده کنید. برای این کار از کلمه کلیدی WITH ENCRYPTION استفاده می شود. در زیر نمونه ای از چگونگی ایجاد یک Stored Procedure با رمزنگاری آورده شده است:

CREATE PROCEDURE YourProcedureName
WITH ENCRYPTION
AS
BEGIN
    -- کد برنامه شما اینجا قرار می گیرد
END

با این حال، توجه داشته باشید که رمزنگاری Stored Procedure به معنای عدم امکان مشاهده کد آن به طور کامل نیست. ممکن است بعضی از ابزارهای خاص قادر به بازگرداندن برخی از کدهای رمزنگاری شده باشند. برای افزایش امنیت، بهتر است از روش های دیگر نیز مانند مدیریت دسترسی مناسب، محدود کردن کاربرانی که می توانند به Stored Procedure دسترسی داشته باشند و استفاده از احراز هویت قوی استفاده کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : 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
امتیاز: 1635 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود