Thứ Sáu, 15 tháng 3, 2013

SQL With Encryption - Mã hoá trong SQL server

http://hmweb.com.vn/sql-server/sql-with-encryption-ma-hoa-trong-sql-server.htm

SQL With Encryption - Mã hoá trong SQL server

Khi lập trình với cơ sở dữ liệu, viết các Store, Trigger, View bạn không quan tâm đến vấn đề bảo mật các thủ tục SQL đó và khi bạn bàn giao cho người khác (khách hàng) họ có thể xem và chỉnh sửa nội dung của nó. Để không muốn cho người khác xem code SQL của mình viết như thế nào bạn có thể mã hóa các code SQL bạn có thể dùng lệnh With Encryption. SQL, With Encryption, Mã hoá, SQL server, Store procedure, View, Trigger,

Bài này tôi sẽ minh họa cho bạn cách dùng lệnh With Encryption.

Thường chúng ta sẽ có thủ tục lưu trữ, truy vấn dữ liệu là các Store Procedure, các Function, các Trigger và các View. Tôi sẽ lần lượt minh họa cách dùng With Encryption cho các thủ tục này.

1. Mã hóa Store Procedure

Giả sử tôi có 1 Store (chưa mã hóa) như sau:

CREATE Proc sTB_Category_SelectByID  @CateID int  As  Begin  	Select tc.CateID, tc.ParentID, tc.CateName,  	   tc.Link,tc.Status  	From TB_Category tc   	WHERE tc.CateID=@CateID  End

Khi bạn Execute store này thì mọi người đều có thể xem, sửa được. Giờ bạn muốn bảo mật Store này không cho người khác xem sửa bạn dùng thêm lệnh With Encryption như sau:

CREATE Proc sTB_Category_SelectByID  @CateID int  WITH encryption  As  Begin  	Select tc.CateID, tc.ParentID, tc.CateName,  	   tc.Link,tc.Status  	From TB_Category tc   	WHERE tc.CateID=@CateID  End

Đối với Store, Trigger, View thì khi bạn dùng tree hiển thị danh sách Srore thì sẽ có biểu tượng cái khóa nhỏ và bạn và người khác không thể xem, sửa được

2. Function

Đối với hàm bạn sử dụng WITH encryption như ví dụ sau đây:

CREATE FUNCTION fTinhTong  (  	@a int, @b int  )   RETURNS int WITH encryption   AS  Begin  	 RETURN @a+@b  End

3. Trigger

Với Trigger bạn cũng sử dụng tương tự như ví dụ sau đây (Và khi trigger có dùng WITH encryption cũng sẽ có biểu tượng cái khóa giống như Store)

CREATE  TRIGGER [dbo].[TB_Category_InsertTrigger]  ON [dbo].[TB_Category] WITH encryption   FOR INSERT AS  UPDATE child   	SET Decen = ISNULL(parent.Decen + 1,0),   	Depth = ISNULL(parent.Depth,'/') + LTrim(Str(child.CateID)) + '/'   FROM TB_Category child INNER JOIN inserted i ON i.CateID=child.CateID   LEFT OUTER JOIN TB_Category parent ON child.ParentID=parent.CateID

4. Với View

Với View bạn dùng như sau

CREATE VIEW  vTopCategory WITH encryption  AS  	SELECT TOP 20 tc.CateID, tc.CateName, tc.Link, tc.Status     	FROM TB_Category tc 

 

Một điều quan trọng bạn cần chú ý đó là khi bạn dùng With Encryption thì kể cả bạn cũng không thể xem, sửa được chính vì vậy trước khi thực hiện ta cần backup database hoặc lưu lại Scrip để làm bản dự phòng cho mình

Không có nhận xét nào:

Đăng nhận xét

(Chơi cho vui) AIRDROP CHAINGE FINANCE - dự án xây dựng ứng dụng ngân hàng số cho mọi người

 Không hiểu lắm về cái này, tuy nhiên thấy quảng cáo khá nhiều, lại chỉ cung cấp vài thông tin cá nhân (mà mấy ông lớn như facebook với goog...