2012-03-04 12 views
7

Ho scritto una stored procedure in SQL Server.Voglio nascondere lo script di una stored procedure in SQL Server 2008

Ora è solo che non voglio che nessuno veda il mio script o lo modifichi.

Si ricorda che sto lavorando su un ID di accesso e una password standard. Che è condiviso con tutti.

Quindi in qualche modo posso consentire a ognuno di eseguire la procedura. Ma non dovrebbero vedere la sceneggiatura.

Cheers! grazie

+0

Anziché crittografare, è necessario correggere la sicurezza. Non ci sono scuse per tutti coloro che sono sullo stesso login con gli stessi diritti. – HLGEM

risposta

7

Siete alla ricerca di WITH ENCRYPTION, che cripta il codice dietro il proc memorizzato.

CREATE PROCEDURE usp_MyProc 
WITH ENCRYPTION 
AS 
SELECT * 
FROM myTable 

Solo un avvertimento, da MSDN:

Gli utenti che non hanno accesso alle tabelle di sistema o file di database non possono recuperare il testo offuscato. Tuttavia, il testo sarà disponibile per gli utenti con privilegi che possono accedere alle tabelle di sistema tramite la porta DAC o accedere direttamente ai file di database.

Alcuni riferimenti ed ulteriore lettura:

+0

Inoltre, 'WITH ENCRYPTION' in SQL Server dovrebbe essere chiamato' WITH MINOR_OBFUSCATION'. Se sai cosa stai cercando, ci sono un sacco di risorse che aiutano a decrittografare un oggetto di sistema, e non sono limitate agli utenti privilegiati o al DAC. –

+0

È vero, non escluderà qualcuno che è determinato a vedere il codice, ma manterrà la maggior parte delle persone. –

2

Utilizzare la parola chiave encryption per la stored procedure. In questo modo nascondere il codice:

CREATE PROCEDURE dbo.foo 
WITH ENCRYPTION 
AS 
BEGIN 
    SELECT 'foo' 
END 
+0

chiunque può ancora eseguire l'SP, giusto? solo il codice è nascosto – LearnByReading

+0

Questo è corretto. –

3

SQL Server non realmente fornire un metodo infallibile per proteggere il codice del modulo. La clausola WITH ENCRYPTION dovrebbe essere denominata qualcosa sulla falsariga di WITH LOOSE_OBFUSCATION, poiché la "crittografia" è molto facilmente contrastata. Non sarai in grado di utilizzare nulla in SQL Server per rendere il codice indecifrabile da chiunque tranne gli spettatori più occasionali: chiunque sia determinato sarà in grado di battere i metodi nativi senza perdere tempo.

Anche se questo può essere abbastanza buono per le vostre esigenze, probabilmente un modo più sicuro (ma non perfetto) è quello di mettere in parte o tutti la logica aziendale della procedura into the CLR (read more here).

Problemi correlati