Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

proteggere la procedura memorizzata negando la definizione della vista

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.