Non è chiaro quale sia il tuo obiettivo:stai cercando di proteggere la proprietà intellettuale; impedire agli utenti di vedere informazioni sensibili nel codice sorgente (es. password); impedire agli utenti di ALTERARE le procedure stesse o qualcos'altro? I tuoi utenti sono utenti interni della tua azienda o sono clienti esterni? Ospitano il database e l'applicazione o tu?
Per proteggere la proprietà intellettuale:
- Chiedi ai tuoi utenti (clienti?) di firmare un accordo di non divulgazione o un contratto che specifichi i tuoi termini e condizioni e includa sanzioni per la divulgazione della tua proprietà intellettuale
- Sposta le informazioni sensibili in un servizio che ospiti ed esponi come servizio web
Per impedire agli utenti di visualizzare il codice sorgente:
- CREA PROCEDURA CON ENCRYPTION - questo impedisce solo agli utenti "normali" di vedere il codice, non fermerà un determinato utente con autorizzazioni di amministratore di sistema
- Scrivi una procedura CLR in .NET invece di usare TSQL
- Sposta le informazioni sensibili in un'applicazione client compilata
- Sposta le informazioni sensibili in un servizio che ospiti ed esponi come servizio web
Per impedire agli utenti di ALTERARE le procedure:
- Non concedere loro le autorizzazioni necessarie
Alla fine, un determinato utente con autorizzazioni di amministratore di sistema eseguirà sempre il reverse engineering, il debug, la decompilazione o in altro modo scoprirà la logica nel codice. Quindi devi essere molto chiaro su cosa esattamente stai cercando di prevenire, quale potenziale impatto ha su di te o sulla tua azienda e quanto tempo e denaro sei disposto a investire per prevenirlo.