/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
JDBC - Skjule brugernavn og adgangskode
Fra : Ryan Dahl


Dato : 07-07-04 11:59

Hej,

jeg vil gerne tilgå en database fra en java-applet, men er lidt
usikker på sikkerheden i en sådan løsning.

Databasen bruger et specifikt sæt brugernavn/adgangskode - som gerne
skal skjules for brugere, herunder de mere nysgerrige sjæle.

Hvor og hvordan opbevares brugernavn/adgangskode bedst - og hvad er
evt. sikkerhedsrisici?

På forhånd tak
Ryan

 
 
Anon (07-07-2004)
Kommentar
Fra : Anon


Dato : 07-07-04 13:32

Ryan Dahl wrote:
> Databasen bruger et specifikt sæt brugernavn/adgangskode - som gerne
> skal skjules for brugere, herunder de mere nysgerrige sjæle.
> Hvor og hvordan opbevares brugernavn/adgangskode bedst - og hvad er
> evt. sikkerhedsrisici?

Ikke at jeg kan bidrage med en løsning, men blot gøre opmærksom på, at
enhver med en pakkesniffer vil kunne fange brugernavn/password sendt fra
en applet. Du har ikke mulighed for at afvikle som en servlet i stedet?

Anon

Filip Larsen (07-07-2004)
Kommentar
Fra : Filip Larsen


Dato : 07-07-04 16:24

Ryan Dahl skrev

> jeg vil gerne tilgå en database fra en java-applet, men er lidt
> usikker på sikkerheden i en sådan løsning.
>
> Databasen bruger et specifikt sæt brugernavn/adgangskode - som gerne
> skal skjules for brugere, herunder de mere nysgerrige sjæle.

Du skal først gøre dig klart hvem og hvilke handlinger du forsøger at
sikre dit system imod. Dernæst er det nemmere at se hvilke muligheder du
har.

Som grundprincip kan du dog gå ud fra, at usikrede dele af dit system
(dvs. dele du ikke har sikkerhedsmæssig kontrol over, såsom applets der
bruges på usikrede computere) kan aflæses og ændres fuldstændig af en
seriøs angriber og at disse deles kommunikation med sikrede dele (som
fx. din database) derfor kræver speciel sikring af, at protokollen
bliver overholdt.

I forbindelse med JDBC brugernavn og password i klienter (fx applets),
så er det generelt en god ide at oprette en speciel bruger i databasen
der kun har adgang til de tabeller og operationer der benyttes af
klienten. For komplicerede adgangs- og valideringforhold kan man som
regel komme langt med stored procedures. Hvis dine sikkerhedsinvarianter
(altså de "udsagn" der altid skal gælde for at dit system kan betegnes
som sikkert) er afhængige af klientens kommunikationshistorie, så kan
det bliver nødvendigt at vedligeholde sessionsdata på serveren.

Selvom det godt kan lade sig gøre at bygge et sikkert klient-server
system med en fed klient, så er det dog som regel en mere fleksibel
løsning i længden at benytte 3-delt arkitektur hvor klinterne snakker
med en eller flere kommunikationsservere der igen snakker med en
databaseserver (klienterne har altså ikke direkte adgang til databasen).
Databaseserveren bruges her til det den er god til, nemlig at håndtere
data, mens kommunikationsserveren håndterer sessionsdata og
forretningslogik.


Mvh,
--
Filip Larsen



Ryan Dahl (09-07-2004)
Kommentar
Fra : Ryan Dahl


Dato : 09-07-04 22:40

Jeg takker for de gode tilbagemeldinger, og holder mig ihvertfald
foreløbig til server-side validering.

mvh
Ryan

Martin Kofoed (08-07-2004)
Kommentar
Fra : Martin Kofoed


Dato : 08-07-04 06:42

On Wednesday 07 July 2004 12:58, Ryan Dahl wrote:

> jeg vil gerne tilgå en database fra en java-applet, men er lidt
> usikker på sikkerheden i en sådan løsning.

Det er generelt en dum ide at lave SQL direkte fra en applet. Den kommer jo
til at ligge på brugernes maskiner, og kan så let som ingen ting decompiles
og ændres.

SQL hører til på serversiden. En applet kan så eksempelvis bruges til at
kalde specifikke metoder på serveren, der laver validering og kalder ind i
db-laget. Entry point kunne eksempelvis være en servlet eller en web
service. Hvis man absolut VIL benytte en applet til præsentationen .. :)

På serversiden kan du så lave en connection pool i eksempelvis Tomcat,
således at user + password hænger på denne. Derefter kan du kalde
getConnection() uden at angive user + password nogen steder.


--
Martin Kofoed


Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408177
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste