15. juli 2007 - 18:33Der er
16 kommentarer og 1 løsning
Sikkerhedsspørgsmål v/ databaser
Hej, Jeg har et spørgsmål vedr. sikring af sine applikationer. Et meget aktuelt eksempel på dette er Connection strings, hvis jeg skal connecte til min MySQL database.
Hvis en ondsindet person så lige kører mit program gennem en decompiler (f.eks. Lutz Roeders) får han serveret alle mine databaseinformationer på et sølvfad.
Hvordan kan jeg sløre disse oplysninger? Jeg ved at VS.NET har en indbygget obfuscator - men den er dårlig og er ikke besværet værd. I så fald skal jeg betale yderligere for at få den opgraderet, og det er ikke noget jeg har lyst til.
Så - er der nogle som har nogle tricks til at undgå at man kan få mine database oplysninger bare ved at decompile og så læse kildekoden?
Uanset hvor meget du beskytter din egen kode, så foretager du nogle kald til metoder i .NET. Hvis en ondsindet person overvåger disse kald, så får han dine oplysninger
Det er korrekt, men jeg synes det er tankevækkende at det er så "åbent" at man bare lige skal hente en decompiler, og så - haps. Jeg ved at Obfuscatoren kan løse dét problem, men i så fald kommer det til at koste. Det har altid irriteret mig at man så let kan læse informationerne, og jeg ville gerne bare gøre LIDT mere til at maskere det - gerne uden eventuelle "server-backends" ;)
Medmindre du kan have din database adgang server side (og på en server med en pålidelig admin), så er løsningen individuelle passwords som brugeren faktisk skal indtaste.
Problemet er ikke specielt .Net. Hvis du ikke aktivt gør noget for at f.eks. kryptere dit password i en "almindelig" exe så kan det såmæn aflæses med en almindelig hexeditor.
Hvis du ikke stoler på dine brugere, så bør du some arne_v sagde, lave enkeltpersonsadgang, eller evt. bruge en service-orienteret arkitektur med tokens som "security".
Under alle omstændigheder kan man næsten altid hacke det information ud fra et program som man vil have, så du kan godt opgive ideen med obfuscators, de kan sagtens omgåes.
Det må siges at være fornuftig snak. Tja, tror såmænd jeg laver en dll til at håndterer database-sjovet, og så kan jeg meget passende genbruge den i kommende projekter. Jeg bruger det udelukkende til at lære mere omkring det i øjeblikket så jeg kan få noget mere hands-on erfaring med det.
Jeg må ærlig indrømme at jeg er lidt i tvivl om hvordan vi skal fordele points, da jeg synes alle har haft fornuftigt input. Måske, nielle, arne og windcape kan deles?
Og så kan man jo lytte på pakkerne der sendes på netværket.
Skal du have en databaseadgang, så opret en mysql-bruger med præcis de rettigheder, der er brug for, intet mere.
Men direkte adgang til databasen udefra bør undgås, som du selv er ved at opdage. Jeg kender ikke din problemstilling, men vil alligevel foreslå at du kigger på muligheden for at dit program forbinder til en webservice, som så igen forbinder til databasen. Dermed er adgangen til databasen væk fra dit program, og databaseadgangen kan også lukkes helt/delvist mod verden. I den webservice skal du så tage stilling til hvordan adgangskontrollen skal ske - har du flere kunder, skal de vel ikke kunne se hinandens data, selv om de decompiler, snuser pakke, eller hvad de nu kan finde på. Kan de alligevel, så er det ikke en applikation du skal frigive.
Det bliver ikke noget som skal bruges med af 3. parts, det bliver mere præcist et lille system til at styre sager og koordinere ting med sammen med nogle få personer som jeg vel at mærke kender godt. Det kunne godt vise sig at skulle være en webservice. I de gamle dage lavede jeg bare en php backend som modtog dataerne. Simpelt, men det virkede.
Hvis jeg havde opfundet det er jeg sikker på at min tegnebog ville være større idag :) Vil de, der har kommenteret være søde at smide et svar så vi kan få lukket butikken?
Denne har været åben et stykke tid. Jeg tillader mig derfor at lukke denne således at den ikke forsvinder i tågerne. Jeg er dog ked af at Windscape ikke meldte sig.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.