Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java - Tietoturvaprobleemi

litra [03.03.2005 22:20:04]

#

Oletetaan että minulla olisi perus Swingi-pohjainen sovellus joka käyttäisi vaikka mySql:tietokantaa..

Miten tämä saataisiin toteutettua turvallisesti, kun tiedossa on että class-tiedostot saa suhteellisen helposti käännettyä takaisin .javaksi ja kaikki tietokantayhteyksien salasanat/rakenne ovat helposti selvitettävissä koodista.

Onko olemassa minkäänlaista menetelmää tämän turvaamiseksi?

FooBat [03.03.2005 22:45:04]

#

Käytännössä ainoa mahdollisuus taitaa olla, että jaat ohjelmasi serveriin ja clientiin, ja ajat serveria tilassa johon normaalikäyttäjillä ei ole pääsyä (esim. toisella koneella). Kaikki sql-liittyvä (kuten kannan salasana ja ainoat sallitut SQL-lauseet) tulee olla vain serverin käytössä ja normaalikäyttäjä voi käyttää vain clientia, joka sitten keskustelee socketin yli serverin kanssa kutsuen jotain palveluja.

maka78 [05.03.2005 12:38:46]

#

Salasanojen ja käyttäjätunnusten kovakoodaus on mielestäni kyllä aina huono ratkaisu :/. Kyllähän kätyn ja salasanan voi kysyä käyttäjältä ennen tietokanta yhteyttä.

FooBat [05.03.2005 17:42:50]

#

Enpä minä mitää käyttäjätunnuksista ja käyttäjien salasanoista puhunutkaan vaan siitä salasanasta, joka sallii tietokantayhteyden. Tietokannan salasanaa ei tietenkään missään tapauksessa pidä kysyä käyttäjältä, sillä jos käyttäjä tietää kannan salasanan voi hän käytännössä tehdä ihan mitä vaan kannan sisällöllä. Tämä voisi käytännössä toimia vain yhden käyttäjän järjestelmissä, joissa käyttäjä on myös ohjelman ylläpitäjä ja tässähän tapauksessa ei kovin paljon tarvitse tietoturvaa miettiä. Kannan salasanaa ei tarvitse kuitenkaan kovakoodata koodiin vaan sen voi myös lukea config-tiedostosta serveriä käynnistettäessä. Config-tiedosto ei tietenkään saa olla kaikkien luettavissa.

Käyttäjätunnukset ja käyttäjien salasanat kannattaa tallettaa itse kantaan. Jotta kantaa pystyisi lukea pitää tietenkin serverillä olla kannan salasana, joten salasanoja ei oikeastaan voi kysyä ennen tietokantayhteyttä (tai ainakaan niitä ei voi tarkistaa sitä ennen).

EDIT: Pitipä vielä lisätä, että tämä tietoturva probleemi ei ole vain java-kohtainen vaan pätee millä tahansa kielellä kirjoitettuun ohjelmaan. Jos käyttäjän käyttämä ohjelma voi suoraan käyttää tietokantaa, tarkoittaa se käytännössä sitä, että myös ohjelman käyttäjä voi suoraan käyttää kantaa ja että on kanta täysin käyttäjän hallinnassa.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta