Det är inte klart vad ditt mål är:försöker du skydda immateriella rättigheter; förhindra användare från att se känslig information i källkoden (t.ex. lösenord); hindra användare från att ändra procedurerna själva, eller något annat? Är dina användare interna användare i ditt eget företag eller är de externa kunder? Är de värd för databasen och applikationen eller gör du det?
För att skydda immateriella rättigheter:
- Låt dina användare (kunder?) underteckna ett NDA eller kontrakt som specificerar dina villkor och inkluderar påföljder för att avslöja din immateriella egendom
- Flytta den känsliga informationen till en tjänst som du är värd för och exponerar som en webbtjänst
För att förhindra att användare ser källkoden:
- SKAPA PROCEDUR MED KRYPTERING - detta förhindrar bara "normala" användare från att se koden, det kommer inte att stoppa en bestämd användare med sysadmin-behörigheter
- Skriv en CLR-procedur i .NET istället för att använda TSQL
- Flytta den känsliga informationen till ett kompilerat klientprogram
- Flytta den känsliga informationen till en tjänst som du är värd för och exponerar som en webbtjänst
För att förhindra att användare ÄNDRAR procedurerna:
- Ge dem inte de nödvändiga behörigheterna
I slutändan kommer en bestämd användare med sysadmin-behörigheter alltid att bakåtkonstruera, felsöka, dekompilera eller på annat sätt avslöja logiken i din kod. Så du måste vara väldigt tydlig med exakt vad du försöker förebygga, vad den potentiella påverkan är på dig eller ditt företag och hur mycket tid och pengar du är villig att investera i att förhindra det.