2009-01-07 42 views

Trả lời

11

Tôi có thể hiểu một cách mơ hồ mã nếu nó cực kỳ tiên tiến trong những gì nó làm, nhưng tôi nghĩ rằng làm xáo trộn SQL của bạn có thể không đáng để gặp rắc rối.

Dù sao thì, rất nhiều SQL tôi đã thấy ở đây đều trở thành tiêu chuẩn.

+0

Haha, chỉ vì bạn không nhận được bộ gen của tất cả các câu lệnh SQL tốt này, điều đó không có nghĩa là chúng bị che khuất. Bạn thiên tài-fu chỉ đơn giản là quá yếu. ;) – Bombe

0

Bạn luôn có thể viết mã thông thường trong C# (hoặc VB) và lưu nó bên ngoài cơ sở dữ liệu trong một DLL.

Sau đó, bạn không phải lo lắng về việc làm xáo trộn SQL của mình.

+0

Có, nhưng những dll này có thể dễ dàng bị biên dịch lại, vì vậy bạn cần phải làm xáo trộn, vì vậy bạn trở lại hình vuông 1. –

+0

Mọi thứ có thể thực thi được có thể được biên dịch và đảo ngược. Vì vậy, bạn không thể rời khỏi quảng trường 1. Tại sao phải bận tâm? –

0

Nếu bạn thực sự lo lắng về một người nào đó đi vào DB và nhìn thấy những nguồn cho các thủ tục, sau đó là S. Lott nói, bạn có thể cổng các thủ tục để C#. Tôi muốn giới thiệu LINQ.

Tuy nhiên, bản thân cơ sở dữ liệu có lẽ nên được bảo vệ khỏi những người truy cập vào mã cho các thủ tục không nên. Bạn có thể hạn chế quyền của người dùng hoặc nhóm chỉ có quyền truy cập EXECUTE vào proc nếu cần.

3

số Ít nhất, không phải trong một cách đó là un thể đảo ngược. "WITH ENCRYPTION" của SQL Server 2000 có thể được đảo ngược để nhận bản gốc. Mã giả và một tập lệnh T-SQL minh họa điều này ở đây: http://education.sqlfarms.com/education/ShowPost.aspx?PostID=783

Lưu ý: Tôi chưa thử với SQL 2005 trở lên, nhưng tôi đoán nó cũng dễ bị tổn thương .. Như MSDN tài liệu nhà nước:

ENCRYPTION Chỉ ra rằng SQL server sẽ chuyển đổi các văn bản gốc của CREATE PROCEDURE tuyên bố một obfuscated định dạng .

Mỏ nhấn mạnh.

1

Một tùy chọn sẽ chỉ là đặt các phần nhạy cảm của quy trình được lưu trữ trong quy trình được lưu trữ CLR và làm xáo trộn cụm từ đó bằng cách sử dụng sản phẩm obfuscation chuyên nghiệp.

http://msdn.microsoft.com/en-us/library/ms131094.aspx

2

Dễ dàng đảo ngược nếu bạn biết nhưng đe dọa đến để hầu hết mọi người chọc xung quanh mã. hex mã hóa bạn sproc logic và sau đó thực hiện với EXEC (@hexEncodedString).
xem điều này post.

1

Bài đăng cũ, tôi biết. Nhưng tôi đã đến đây để tìm kiếm 'Tại sao tôi phải làm xáo trộn SQL?' Tôi vừa cài đặt một sản phẩm miễn phí có tên là ApexSQL Refactor (không liên kết), cung cấp một thành phần obfuscation.

Nó cung cấp một số tùy chọn khác nhau để làm cho mã của bạn khó đọc. Tôi không chắc tại sao tôi lại muốn một tính năng như vậy, vì những người khác đã lưu ý khả năng mã hóa các thủ tục đã lưu trữ của bạn. Dù sao, đây là một ví dụ về đầu ra nó có thể trở về từ hàm obfuscation của nó.

CrEAtE Procedure spInsertOrUpdateProduct @ProductNumber nVarChar(25), 
@ListPrice Money aS IF exIsTS(selECt * FROm Production.Product WHere 
[email protected] AnD ListPrice>1000) uPdatE Production. 
Product sET ListPrice=(ListPrice-100) where ProductNumber= 
@ProductNumber elsE INSerT intO Production.Product(ProductNumber, 
ListPrice) SelECT @ProductNumber,@ListPrice GO SElEct * fRoM 
Production.Product gO iNsERT iNTo Production.UnitMeasure(
UnitMeasureCode,Name,ModifiedDate) vAlUeS(N'FT2',N'Square Feet', 
'20080923'); Go 
Các vấn đề liên quan