Gå til innhold

Anbefalte innlegg

*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
Videoannonse
Annonse

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

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

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 av GeirGrusom
  • Liker 1
Lenke til kommentar

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...