Encryption در SQL Server
Printable View
Encryption در SQL Server
اين هم نمونه اي از كد كردن و از كد در آوردن داده ها توسط SYMMETRIC KEY ، حتما ببنيد حتي اگه الان به دردتون نميخوره :
Encryption يك راهكار عملي براي كد كردن داده ها ي جدول توسط يك الگوريتم رمزگذاري است ، مثلا فرض كنيد ميخواين رمز كاربران برنامه يا سطح دسترسيشون رو در يك ديتابيس ذخيره كنيد ، در اين جور مواقع استفاده از توابع EncryptByKey كه با دو پارامتر ورودي كليد و رشته اي كه قصد كد كردن اون رو داريد و پارامتر خروجي نوع VARBINARY كه رشته كد شده است مفيد واقع ميشه .کد:http://dotnetslackers.com/articles/sql/IntroductionToSQLServerEncryptionAndSymmetricKeyEncryptionTutorial.aspx
همينطور زماني كه نياز به خواندن داده هاي كدشده داريد ميتونيد با استفاده از تابع DecryptByKey داده هاتون رو از حالت كد شده خارج كنيد .
اين هم يه سمپل ساده :
کد:USE MASTER
--
---- create symmetric key 'SecureSymmetricKey'
---- using the DESX encryption algorithm
---- and encrypt the key using the password
---- 'StrongPassword'
--CREATE SYMMETRIC KEY SecureSymmetricKey
-- WITH ALGORITHM = DESX
-- ENCRYPTION BY PASSWORD = N'hosein1200';
-- must open the key if it is not already
OPEN SYMMETRIC KEY SecureSymmetricKey
DECRYPTION BY PASSWORD = N'Password';
-- declare and set varible @str to store plaintext
DECLARE @str NVARCHAR(100)
SET @str = N'Hello DESX';
-- declare and set varible @encrypted_str to store
-- ciphertext
DECLARE @encrypted_str VARBINARY(MAX)
SET @encrypted_str =
EncryptByKey(Key_GUID('SecureSymmetricKey'), @str);
-- display ciphertext
SELECT @encrypted_str AS CipherText;
-- declare and set varible @decrypted_str to store
-- decrypted ciphertext
DECLARE @decrypted_str VARBINARY(MAX)
SET @decrypted_str = DecryptByKey(@encrypted_str);
-- display decrypted text
SELECT CONVERT(NVARCHAR(100), @decrypted_str) AS PlainText;
-- close and drop the key
CLOSE SYMMETRIC KEY SecureSymmetricKey;
DROP SYMMETRIC KEY SecureSymmetricKey;
تو نمايشگاه كامپيوتر چند تا نرم افزار رو گرفتم (دموهاي توليد داخل) از جمله نرم افزار حسابداري محك ، يه برسي كوچيك كه رو ديتابيسش داشتم متوجه نكته جالبي شدم !
اين نرم افزار تمام كد هاي موبوط به جداول ، ويو ها ، تريگرها ، پروسيجر هاي ذخيره شده و . . . اش قابل رويت بود !!! يعني ديتابيسش كاملا باز بود :18: و ميتونستي به راحتي با تغيير يك پروسيجر ذخيره شده يا تريكر عملكرد عادي برنامه رو مختل يا اينكه از كدهاي ديتابيس استفاده سو (توسط هكر يا خريداري مثل خود من !!) بشه !
حتي پسورد رو بدون هيچ الگوريتم خاصي تو ديتابيس ذخيره كرده بود ، سطوح دسترسي كاربر با باز كردن ديتابيس توسط يك كاربر آماتور قابل تغيير يود و . . .
با استفاده از Encryption ميتونيد View ها ، Table ها ، Stored Procedure ها , Function ها و . . . رو كد كنيد به اين شكل كه پس از اينكه ديتابيستون دست كاربر نهايي رسيد ديگه امكان مشاهده محتواي موارد ذكر شده وجود نداره .
نكته : Encryption در سطح دستورات DML قابل كد گشايي نيست ، يعني وقتي يك ويو رو كد كرديد ديگه امكان اين وجود نداره * كه اون ويو رو باز كنيد. پس اين كار رو فقط براي كاربران نهايي انجام بدين تا از كدهاي برنامتون محافظت بشه.
* - ظاهرا برنامه هايي هست كه دستورات DML رو كه با دستور With Encryption كد شده ان رو از كد در مياره اينم متن كامل يك اظهار نظر :
جهت آشنايي با Encryption واژه Encryption را در MSDN2 سرچ كنيد .کد:SQL professionals agree that the default trigger, view and procedure encryption that comes with MSSQL 2005 and 2000 is ineffective and easily broken. In fact, Google generates over 3700 links for a search phrase “SQL decryptor”, offering dozens of software solutions that can bypass MSSQL native encryption. Yet, for many companies that use MSSQL for processing sensitive and confidential data, compromising the integrity of encrypted procedures or triggers is not an option. Here you can find such decryptors. We defeat them all!
Refrence : http://www.sql-shield.com/
اينم يه نمونه از كد كردن تريگر :
کد:http://msdn.microsoft.com/en-us/library/ms176072.aspx
salam
ali bood
kheili be man komak kard.
moafagha bashi
سلام دستان می تونن یه لینک برای دانلود و یه مقدار زیادی توضیح در مورد sql developer اریه بدن؟