Come proteggere il codice SQL in SQL Server
-
06-07-2019 - |
Domanda
È possibile proteggere il codice della procedura memorizzata SQL 2008 dagli occhi di chiunque? Forse un po 'di crittografia o assemblaggio come dll?
Soluzione
sì, puoi salvarlo nel database in forma crittografata, ma se lo fai, assicurati di avere il codice sorgente originale memorizzato in modo sicuro da qualche parte ...
CREATE PROCEDURE dbo.foo
WITH ENCRYPTION
AS
BEGIN
SELECT 'foo'
END
Sfortunatamente, ci sono almeno due modi per sconfiggere questo meccanismo. Uno è eseguire SQL Profiler mentre si esegue la procedura memorizzata; questo spesso può rivelare il testo della procedura stessa, a seconda di ciò che fa la procedura memorizzata (ad esempio se ha batch GO, SQL dinamico ecc.). Se manca l'installazione iniziale, l'utente può eliminare le procedure memorizzate o rilasciare il database, avviare una traccia di Profiler e chiedere di ricrearle (nel qual caso acquisiranno le istruzioni CREATE PROCEDURE). Puoi impedire a Profiler di rivelare il testo ai ficcanaso incorporando sp_password nel codice, come commento:
CREATE PROCEDURE dbo.foo
WITH ENCRYPTION
AS
BEGIN
SELECT 'foo'
-- comment: sp_password
END
guarda la documentazione di MSDN Create Procedure