2009-01-07 20 views

उत्तर

11

मैं अस्पष्ट कोड को समझ सकता हूं अगर यह बेहद उन्नत है कि यह क्या करता है, लेकिन मुझे लगता है कि आपके एसक्यूएल को परेशान करने से परेशानी नहीं हो सकती है।

वैसे भी, मैंने यहां देखा है कि बहुत सारे एसक्यूएल मानक के रूप में obfuscated आता है।

+0

हाहा, केवल इसलिए कि आपको इन सभी ठीक एसक्यूएल कथनों की genuis नहीं मिलती है, इसका मतलब यह नहीं है कि वे obfuscated हैं। आप प्रतिभा-फू बस बहुत कमजोर है। ;) – Bombe

0

आप हमेशा सी # (या वीबी) में सामान्य कोड लिख सकते हैं और इसे डीएलएल में डेटाबेस के बाहर स्टोर कर सकते हैं।

फिर आपको अपने एसक्यूएल को खराब करने की चिंता करने की आवश्यकता नहीं है।

+0

हां, लेकिन उन डीएलएस को आसानी से डिस्प्ले किया जा सकता है, इसलिए आपको obfuscate करना होगा, इसलिए आप वापस वर्ग 1 पर वापस आ गए हैं। –

+0

सब कुछ निष्पादन योग्य डीकंपिल्ड और रिवर्स इंजीनियर हो सकता है। तो आप वर्ग 1 से बाहर नहीं जा सकते हैं। परेशान क्यों? –

0

आप किसी को डीबी में हो रही है और प्रक्रिया के लिए स्रोत देखने के बारे में वास्तव में चिंतित हैं, तो के रूप में एस लोट ने कहा, आप बंदरगाह सी # करने के लिए प्रक्रिया कर सकते हैं। मैं LINQ की सिफारिश करेंगे।

हालांकि, डेटाबेस को शायद उन प्रक्रियाओं के लिए कोड तक पहुंचने वाले लोगों से संरक्षित किया जाना चाहिए जो नहीं होना चाहिए। आप किसी उपयोगकर्ता या समूह के अधिकारों को केवल तभी सीमित कर सकते हैं जब आवश्यक हो तो एक proc तक पहुंच प्राप्त करें।

1

संग्रहीत प्रक्रिया बनाते समय आप एनक्रिप्शन क्लॉज का उपयोग कर सकते हैं।

यह ग्राहक मशीन पर स्रोत एसक्यूएल को छोड़ने पर भरोसा नहीं करेगा।

अधिक जानकारी के लिए यहाँ देखें:

http://msdn.microsoft.com/en-us/library/ms187926(SQL.90).aspx

3

संख्या कम से कम, एक तरीका है कि गैर-प्रतिवर्ती है में नहीं है। मूल सादा पाठ प्राप्त करने के लिए SQL Server 2000 की "एनक्रिप्शन के साथ" को उलट किया जा सकता है। छद्म कोड और एक टी SQL स्क्रिप्ट है कि इस दिखाता है यहाँ है: http://education.sqlfarms.com/education/ShowPost.aspx?PostID=783

नोट: मैं ऊपर एसक्यूएल 2005 या के साथ इसे करने की कोशिश नहीं की है, लेकिन मेरा अनुमान है कि यह उतना ही कमजोर है .. MSDN के रूप में डॉक्स राज्य:

एन्क्रिप्शन इंगित करता है कि SQL सर्वर एक समझ से परे प्रारूप करने के लिए बनाने की प्रक्रिया कथन का मूल पाठ में परिवर्तित कर देंगे।

जोर मेरा।

1

एक विकल्प सीएलआर संग्रहीत प्रक्रिया में संग्रहीत प्रक्रिया के केवल संवेदनशील हिस्सों को रखना होगा, और एक पेशेवर obfuscation उत्पाद का उपयोग कर उस असेंबली को obfuscate होगा।

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

2

आसानी से ज्यादातर लोगों को कोड के आसपास poking के लिए प्रतिवर्ती यदि आप जानते हैं, लेकिन करने के लिए डराना। हेक्स एन्कोड आप तर्क को स्पोक करते हैं और फिर EXEC (@hexEncodedString) के साथ निष्पादित करते हैं।
यह post देखें।

1

पुरानी पोस्ट, मुझे पता है। लेकिन मैं यहां से खोज कर रहा हूं 'मुझे एसक्यूएल को क्यों रोकना चाहिए?' मैंने अभी एपेक्स एसक्यूएल रिएक्टर (कोई संबद्धता) नामक एक मुक्त उत्पाद स्थापित किया है जो एक obfuscation घटक प्रदान करता है।

यह आपके कोड को पढ़ने में कठोर बनाने के लिए कई अलग-अलग विकल्प प्रदान करता है। मुझे यकीन नहीं था कि मैं ऐसी सुविधा क्यों चाहूंगा, क्योंकि अन्य ने आपकी संग्रहीत प्रक्रियाओं को एन्क्रिप्ट करने की क्षमता को नोट किया है। वैसे भी, यह आउटपुट का एक उदाहरण है जो इसे अपने obfuscation फ़ंक्शन से वापस कर सकता है।

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 
संबंधित मुद्दे