marradi Skrevet 11. januar 2013 Del Skrevet 11. januar 2013 *Opprinnelig startet under annet emne (databaser), dette kan slettes.* Hei, Jeg lager et dataprogram (i C# men det er ikke relevant). Meningen er at folk skal kunne opprette brukerkontoer. Jeg har benyttet en MySql-database som holder kontroll på brukerkontoer. Via denne kan man sende forespørsler til andre brukere og etterhvert skal man også kunne sende oppdateringer til en app jeg også lager. Men er egentlig dette den riktige måten å lage et sånt system på? For at dette skal funke må jeg gi tilgang til alle IP-adresser, slik at alle som bruker programmet mitt skal kunne snakke med databasen. Kan dette bli et sikkerhetsproblem? Hvilke andre måter har jeg eventuelt til å bygge opp et slikt system? Lenke til kommentar
GeirGrusom Skrevet 11. januar 2013 Del Skrevet 11. januar 2013 Sikkerhetsproblemet med dette er at du kan ikke stole på brukeren. Dersom programmet ditt er istand til å slå opp for eksempel passord-hash til alle brukerne så må du anta at også brukeren er istand til dette. Lenke til kommentar
marradi Skrevet 11. januar 2013 Forfatter Del Skrevet 11. januar 2013 Men det er kun programmet som kommer til å kommunisere med databasen. Og man trenger fremdeles passord og brukernavn for å logge seg inn i databasen. På hvilke andre måter skal man kunne lage et slikt system om ikke via online databaser? Lenke til kommentar
Laserbeam Skrevet 11. januar 2013 Del Skrevet 11. januar 2013 (endret) Programmér en server som hånterer all database kommunikasjonen, som programmet ditt kommuniserer med. Dermed er det kun et program (serverprogramvaren) som har direkte tilgang til databasen, da er det også lettere å implementere kryptering. Endret 11. januar 2013 av Gnålern 1 Lenke til kommentar
marradi Skrevet 11. januar 2013 Forfatter Del Skrevet 11. januar 2013 Hm, ja det er et alternativ. Men skjønner fremdeles ikke hvorfor det ikke skal være mulig å kommunisere direkte med en database. Fikk faktisk min hostingsside til å åpne opp for alle IP-adresser, så blir spennende å se nå. Jeg vil selvfølgelig gjøre dette på den riktige måten da. Så hvis dere mener dette er en veldig dum måte å gjøre det på, så skal jeg lytte til det. Takk for svar! Lenke til kommentar
Gjest Skrevet 11. januar 2013 Del Skrevet 11. januar 2013 Det du er ute etter er en RESTful server, det vil si du har en server som tar i mot alle spørringer via en URL (API) og håndterer det lokalt på serveren, akkurat Twitter / Facebook gjør. Du kan da ikke tro at Twitter gir ut database-passordet for at du skal hente ut Tweets fra dem? Nei, de tilbyr en API-løsning Noe du bør gjøre for sikkerhetens skyld. Lenke til kommentar
GeirGrusom Skrevet 11. januar 2013 Del Skrevet 11. januar 2013 (endret) Men det er kun programmet som kommer til å kommunisere med databasen. Og man trenger fremdeles passord og brukernavn for å logge seg inn i databasen. På hvilke andre måter skal man kunne lage et slikt system om ikke via online databaser? Du trenger brukernavn og passord for å koble til databasen ja, men dersom du bruker denne for å lagre brukerinformasjon så kan du si det slik at informasjon om alle brukere er fritt tilgjengelig for sluttbrukeren dersom det er det for programmet ditt. Du må anta at brukeren har samme tilgangsnivå til dataene som det programmet du skriver har. Derfor bør du ha et abstraksjonslag i mellom som sikrer autentisering. Du må aldri stole på sluttbrukeren. ALDRI. Selv for databasebrukeren som abstraksjonslaget benytter burde du begrense tilgangene til et minimum. Ikke tillat delete, create eller drop denne brukeren. Dette burde begrenses til kun å være mulig for sa og utviklingsbrukere. Endret 11. januar 2013 av GeirGrusom 1 Lenke til kommentar
marradi Skrevet 11. januar 2013 Forfatter Del Skrevet 11. januar 2013 Takk takk alle sammen. Da forsøker jeg å gå for en noe slikt. Link til en god side å starte? Lenke til kommentar
quantum Skrevet 11. januar 2013 Del Skrevet 11. januar 2013 hva med msdn.microsoft.com? kanskje oracle har noen eksempler på c# mot mysql? og siden det er nesten umulig å finne særlig originalte spørsmål eller rote seg bort i problemer som ikke noen andre har løst allerede; www.stackoverflow.com Lenke til kommentar
Laserbeam Skrevet 11. januar 2013 Del Skrevet 11. januar 2013 http://docs.oracle.com/cd/E17952_01/refman-5.5-en/index.html Ta en titt her: Chapter 22. Connectors and APIs eventuelt; 22.3.4. Connector/J Examples (Java) eller 22.2. MySQL Connector/Net (.NET) Bare å sette i gang å lese, lage en wrapper class er alltids kjekt, sparer deg for mye arbeid seinere, er det jeg alltid pleier når jeg skal lære meg noe nytt innenfor programmering. Lenke til kommentar
quantum Skrevet 12. januar 2013 Del Skrevet 12. januar 2013 Du trenger brukernavn og passord for å koble til databasen ja, men dersom du bruker denne for å lagre brukerinformasjon så kan du si det slik at informasjon om alle brukere er fritt tilgjengelig for sluttbrukeren dersom det er det for programmet ditt. Det fins multitenancy-databaser, og oracle har vel fått denne egenskapen de siste åra. Bare så det er nevnt, men det er ikke en utbredt måte å "gjøre det på", og det fins også et utall andre argumenter for å implementere dette langs de linjene som er foreslått ovenfor. Men hvor relevante disse argumentene egentlig er kommer an på en rekke forhold som vi ikke vet noe om, egentlig. Anyway, ts har spurt om det er et problem at alle ip'er må få tilgang. Det kan ingen andre enn ham selv svare på. Men når man legger en komponent/serverapp foran databasen - som foreslått over - så har man bedre kontroll på hva brukere kan gjøre og ikke gjøre. Problemet med tilgang for alle ip'er er flyttet opp fra databasen og til denne komponenten isteden. Hvis det fortsatt er et problem så får man heller aksessere komponenten gjennom VPN. Det vil også løse et eventuelt annet problem, nemlig ukryptert kommunikasjon. Brukernavn og passord kan sniffes. Enten om man aksesserer databasen direkte, eller via en frontend, bør kommunikasjonen krypteres. Alternativet til VPN blir da f.eks. https - hvis det skal kommuniseres med en restful webservice. Til slutt: En veldig vanlig måte å gjøre dette på, er å lage en tynn klient med html-interface, asp.net blir vel et naturlig valg her i så måte. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå