ایجاد امنیت و رمزنگاری کردن Stored Procedure در Sql Server
سلام دوستان یه سری پراسیجرهای پیچیده ای دارم که برای یک شرکت نوشته شده و در دیتابیس اون ها قرار داده شده. اما نمیخوام اسکریپت هایی که نوشتم رو کسی بتونه ببینه و دسترسی داشته باشه. آیا راهی هست که بشه با ایجاد امنیت و رمزنگاری کردن Stored Procedure در Sql Server دسترسی به اسکریپت ها رو محدود کرد ؟
پاسخ هوش مصنوعی
بله، در SQL Server می توانید از قابلیت رمزنگاری برای محدود کردن دسترسی به کدهای Stored Procedure استفاده کنید. برای این کار از کلمه کلیدی WITH ENCRYPTION
استفاده می شود. در زیر نمونه ای از چگونگی ایجاد یک Stored Procedure با رمزنگاری آورده شده است:
CREATE PROCEDURE YourProcedureName
WITH ENCRYPTION
AS
BEGIN
-- کد برنامه شما اینجا قرار می گیرد
END
با این حال، توجه داشته باشید که رمزنگاری Stored Procedure به معنای عدم امکان مشاهده کد آن به طور کامل نیست. ممکن است بعضی از ابزارهای خاص قادر به بازگرداندن برخی از کدهای رمزنگاری شده باشند. برای افزایش امنیت، بهتر است از روش های دیگر نیز مانند مدیریت دسترسی مناسب، محدود کردن کاربرانی که می توانند به Stored Procedure دسترسی داشته باشند و استفاده از احراز هویت قوی استفاده کنید.
امنیت در 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 ها یک علامت قفل روی اون قرار گرفته.
می بینید که پراسیجر شما به وجود اومده و یک علامت قفل روش هست. حالا اگر روی نام این پراسیجر کلیک راست کنید مشاهده می کنید که گزینه Modify غیر فعال هست. یعنی دسترسی به اسکریپت وجود نداره.
اما یک نکته. ما برای اینکه بتونیم به کدهای یک پراسیجر دسترسی داشته باشیم علاوه بر اینکه می تونیم روی نام پراسیجر کلیک راست کنیم و گزینه 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 رو اجرا کنید.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- حذف کامل یک رکورد در جدول ریلیشن شده
- مقایسه ساختار دو دیتابیس در Sql Server
- اشکال در ایجاد کلید خارجی در Sql Server
- تفاوت اوراکل و Sql Server چیست
- جابه جایی سطر و ستون در Sql Server
- استفاده از Stored Procedure در انتیتی فریم ورک code First
- آپدیت لیستی از رکوردها در Sql Server - آپدیت گروهی اطلاعات در Sql Server
- دلیل پرش 1000 تایی خودکار فیلد identity در Sql server
- مشکل نمایش ندادن Data Type موقع تایپ در Sql Server
- کار با تاریخ شمسی وساعت (استفاده از توابع )