Ako správne pristupovať k databáze?
Moderátori: psichac, Moderátori
Ako správne pristupovať k databáze?
Zdravím vospolok, chcel by som sa spýtať skúsenejších ako správne programovo pristupovať k databáze. Robím len malé aplikácie v C#rpe takým spôsobom že mám na sieťovom disku uloženú databázu ku ktorej sa pripájajú rôzny užívatelia pomocou môjho programu. Napríklad dochádzkový systém. Program mi už beží zopár rokov bez zjavných problémov. Nedávno som ale zistil (...och aké to prekvapenie ) že môj skompilovaný exe program sa dá jednoducho dekompilovať (ILSpy) a kedže mám v programe uvedený connection string s heslom, dá sa veľmi jednoducho heslo zistiť a použiť ho na priamy prístup k databáze.
Ako sa teda rieši takýto prístup v programe aby to bolo bezpečné a nedalo sa heslo zistiť? Na prístup k databáze používam OLEdb, syntax SQL.
Ďakujem za rady.
Ako sa teda rieši takýto prístup v programe aby to bolo bezpečné a nedalo sa heslo zistiť? Na prístup k databáze používam OLEdb, syntax SQL.
Ďakujem za rady.
0
-
- Stály člen
- Príspevky: 386
- Dátum registrácie: 16 Júl 2019, 14:22
Re: Ako správne pristupovať k databáze?
Nejaky sposob dekompilacie kde sa da precitat konstantny string bude stale mozny.
Jeden sposob na ochranu je taky, ze si nechas jedno heslo pre seba iba, a s tym, ked sa prihlasis do databazy z nejakeho konca, tak sa koniec "podpise", to znamena, ze ina MAC adresa sa nepripoji bez toho aby bola ulozena v podpisanych MAC adresach, MAC adresa musi byt sucast mena uzivatela.
Ked sa ti chce podpisovat kompy ovsem. Mozes to heslo dat aj zakaznikovi ak mu doverujes a necestovat za nim, resp. mozes ju dat kazdemu kto fyzicky disponuje databazou, ten sa logne cez super admina vzdy aj tak.
Jeden sposob na ochranu je taky, ze si nechas jedno heslo pre seba iba, a s tym, ked sa prihlasis do databazy z nejakeho konca, tak sa koniec "podpise", to znamena, ze ina MAC adresa sa nepripoji bez toho aby bola ulozena v podpisanych MAC adresach, MAC adresa musi byt sucast mena uzivatela.
Ked sa ti chce podpisovat kompy ovsem. Mozes to heslo dat aj zakaznikovi ak mu doverujes a necestovat za nim, resp. mozes ju dat kazdemu kto fyzicky disponuje databazou, ten sa logne cez super admina vzdy aj tak.
0
Re: Ako správne pristupovať k databáze?
Len otázka, ak to niekto dokáže zistiť dekompiláciou, nedokáže to zistiť aj odpozorovaním komunikácie na sieti ( napr. wireshark)?
0
The power of Linux.
Re: Ako správne pristupovať k databáze?
Precitaj si toto. Mozno pomoze. V aplikacii na ktorej pracujem to pouzivame.
https://www.codeproject.com/Articles/11 ... Web-Conf-2
https://www.codeproject.com/Articles/11 ... Web-Conf-2
0
-
- Stály člen
- Príspevky: 386
- Dátum registrácie: 16 Júl 2019, 14:22
Re: Ako správne pristupovať k databáze?
Samozrejme, avsak komunikacia prebieha cez https alebo iny secure protokol, takze iba odpocutie ti vela skutocne neda.21stano21 napísal:Len otázka, ak to niekto dokáže zistiť dekompiláciou, nedokáže to zistiť aj odpozorovaním komunikácie na sieti ( napr. wireshark)?
0
Re: Ako správne pristupovať k databáze?
...ďakujem, niečo také som hľadal.dan21 napísal:Precitaj si toto. Mozno pomoze. V aplikacii na ktorej pracujem to pouzivame.
https://www.codeproject.com/Articles/11 ... Web-Conf-2
0
Re: Ako správne pristupovať k databáze?
niečo podobné som riešil, ukladať heslo priamo v zdrojáku/exe nie je bezpečné. preto ho ukladám kryptované v externom súbore.
dekódovať heslo z ext.súboru je komplikované (zámerne nepíšem nemožné, lebo teraz nič nie je bezpečné).
pri zadaní hesla užívateľa sa toto porovná s dekryptovanym vzorovým heslom.
Je pravda že som zatiaľ nedoriešil odchytenie hesla pri zadávaní cez web rozhranie...
Ak sa nemýlim, tak by to malo byť dostatočne bezpečné, alebo som na niečo zabudol ?
dekódovať heslo z ext.súboru je komplikované (zámerne nepíšem nemožné, lebo teraz nič nie je bezpečné).
pri zadaní hesla užívateľa sa toto porovná s dekryptovanym vzorovým heslom.
Je pravda že som zatiaľ nedoriešil odchytenie hesla pri zadávaní cez web rozhranie...
Ak sa nemýlim, tak by to malo byť dostatočne bezpečné, alebo som na niečo zabudol ?
0
Re: Ako správne pristupovať k databáze?
Ja ti už ani neviem, lebo akonáhle dokážeš dekompilovať mechanizmus ako program dekryptuje dané heslo, aj z externého súboru, vieš sa potom spatne k tomu heslu dostať...
Toto mi práve vŕta hlavou. Napríklad vo vlastnej databáze mám už hesla uložené ako HASH, ale ak sa mi niekto takto jednoducho dostane priamo do databázy, je to dosť na prd...
//Riešim ochranu komunikácie medzi programom a databázou kedy program musí poskytnúť heslo pre spojenie s databázou... (je mi jedno odkiaľ si ho vycucá )
Toto mi práve vŕta hlavou. Napríklad vo vlastnej databáze mám už hesla uložené ako HASH, ale ak sa mi niekto takto jednoducho dostane priamo do databázy, je to dosť na prd...
//Riešim ochranu komunikácie medzi programom a databázou kedy program musí poskytnúť heslo pre spojenie s databázou... (je mi jedno odkiaľ si ho vycucá )
0
-
- Stály člen
- Príspevky: 386
- Dátum registrácie: 16 Júl 2019, 14:22
Re: Ako správne pristupovať k databáze?
Dekompilovany program skompilovat a debugovat miestecko kde v ramke visi heslo. Ale aspon si to trochu "oddialil" a dal hackerovi pracu navyse.Victorio napísal:niečo podobné som riešil, ukladať heslo priamo v zdrojáku/exe nie je bezpečné. preto ho ukladám kryptované v externom súbore.
dekódovať heslo z ext.súboru je komplikované (zámerne nepíšem nemožné, lebo teraz nič nie je bezpečné).
pri zadaní hesla užívateľa sa toto porovná s dekryptovanym vzorovým heslom.
0
Re: Ako správne pristupovať k databáze?
Hmm to by sa dalo, ale programujem v softe ktory nieje velmi rozsireny, v SK v nom robi iba par ludi (si myslim) v de us trosku viac ale nie je to main streem
A databaza no treba konektnut databazu so zadanim mena hesla to je slabina ale riesim to tam tiez kryptovanim, heslo v zdrojaku nie je v databaze je kryptovane iba vo chvili ked ho zada pouzivatel tak zrejme bude v pamati ale to by heker musel v tej chvili sediet pri pouzivatelovi inak ked dam release tak heslo z ram zmizne.
A databaza no treba konektnut databazu so zadanim mena hesla to je slabina ale riesim to tam tiez kryptovanim, heslo v zdrojaku nie je v databaze je kryptovane iba vo chvili ked ho zada pouzivatel tak zrejme bude v pamati ale to by heker musel v tej chvili sediet pri pouzivatelovi inak ked dam release tak heslo z ram zmizne.
0
-
- Ultimate člen
- Príspevky: 6205
- Dátum registrácie: 20 Júl 2007, 00:00
- Vek: 41
Re: Ako správne pristupovať k databáze?
riesi sa to bud tak, ze mas v zdrojaku zakryptovane heslo a pri pripojeni ho odsifrujes, alebo priamo uzivatelske meno/heslo je do db, vtedy uzivatelov spravujes priamo v db. alebo tam das medzivrstvu: webservice. ktory ma api na ktore sa pripaja klient.
ten soft sa pripaja na lokalnu db, alebo niekam na server? ak na server, tak by som uvazoval o webservice, uz len z dovodu, ze dotazy na db vedia pekne vytazit siet.
ak je lokalna, tak tam je to fuk, lebo k datam sa dostanes aj ked nevies heslo do db (skopirujes subory na iny pc a tam ich otvoris)
ten soft sa pripaja na lokalnu db, alebo niekam na server? ak na server, tak by som uvazoval o webservice, uz len z dovodu, ze dotazy na db vedia pekne vytazit siet.
ak je lokalna, tak tam je to fuk, lebo k datam sa dostanes aj ked nevies heslo do db (skopirujes subory na iny pc a tam ich otvoris)
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.
Re: Ako správne pristupovať k databáze?
Databázu mám lokálnu, sama o sebe je chránená heslom, neviem ako by som sa do nej po pravde dostal bez hesla aj keby som ju nakopíroval niekde inde...
0
-
- Stály člen
- Príspevky: 386
- Dátum registrácie: 16 Júl 2019, 14:22
Re: Ako správne pristupovať k databáze?
Ak ju nakopirujes na DB server fyzicky tak cer dbroota, pokial na nej nemas "on connection triger" na pripojenie ktory dbroota zhodi ako je to mozne napriklad vo FB SQL na vybranych tabulkach.
0
-
- Ultimate člen
- Príspevky: 6205
- Dátum registrácie: 20 Júl 2007, 00:00
- Vek: 41
Re: Ako správne pristupovať k databáze?
co je to presne za db? vacsina z nich totiz samotne subory nesifruje, to je podobne, ako ked mas prihlasenie do windows. staci ti dat disk do ineho pc a vies si odtial skopcit subory. tu ti ich staci skopirovat na pc, kde vies do db prihlasenie a mas udaje.
Este mam otazku. ked pises, ze mas db na zdielanom disku, dufam, ze to nemas ako som raz videl u jednej firmy, ze namiesto sql servra isli priamo na dbf subory a cudovali sa, preco im to blbne.
Este mam otazku. ked pises, ze mas db na zdielanom disku, dufam, ze to nemas ako som raz videl u jednej firmy, ze namiesto sql servra isli priamo na dbf subory a cudovali sa, preco im to blbne.
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.
Re: Ako správne pristupovať k databáze?
Áno, presne tak ,na drzáka, ju mám na sieťovom disku, ale zatiaľ to žiadne iné problémy nerobilo. Databáza je Accessova, accdb, a tá je chránena heslom. To musím pri prístupe uvádzať aby som mal na databázu pristup v connection stringu. Myslím že takto zaheslovať sa dá aj bežná databáza na SQL servru. Potom k nej pristupujem pomocou bežnej syntaxe SQL cez C#.
Keby som chcel riešiť databázu cez SQLserver, predopkladám že ten by musel bežať na servri... Popravde, týmto smerom sa v tej problematike vôbec nevyznám...
Chcel by som vedieť ako to mám teda robiť správne, alebo viac profesionálne...
//Ako teda funguje ochrana pri prístupe pomocou SQL servra, ked je autentifikacia postavená na účtoch windowsu? Čo zabráni nejakému môjmu užívatelovi aby si napísal k databáze vlastný program a zmenil mi ju nepríjemným spôsobom? Kedže prístup bude mať...
Keby som chcel riešiť databázu cez SQLserver, predopkladám že ten by musel bežať na servri... Popravde, týmto smerom sa v tej problematike vôbec nevyznám...
Chcel by som vedieť ako to mám teda robiť správne, alebo viac profesionálne...
//Ako teda funguje ochrana pri prístupe pomocou SQL servra, ked je autentifikacia postavená na účtoch windowsu? Čo zabráni nejakému môjmu užívatelovi aby si napísal k databáze vlastný program a zmenil mi ju nepríjemným spôsobom? Kedže prístup bude mať...
0
Re: Ako správne pristupovať k databáze?
Cosi mi tu nesedi. Hadam, ze pouzivas net share a net use. Kde je program pre pouzivatelia kde je databaza?
0
Samozřejmě, že dědeček nemá kapesní hodinky poháněné elektřinou. Takový nesmysl si může vymyslit jen Saturnin. (Zdenek Jirotka, 1942)
-
- Ultimate člen
- Príspevky: 6205
- Dátum registrácie: 20 Júl 2007, 00:00
- Vek: 41
Re: Ako správne pristupovať k databáze?
sql server riesi uzivatelov bud lokalne, teda ucty ma u seba, alebo cez active directory.
uzivatelske prava sa nastavuju bud na konkretnu db, alebo este aj v ramci db na napr. jednotlive tabulky, alebo operacie. napr. uzivatel vie citat, ale nedokaze menit zaznamy.
uzivatel si moze napisat vlastny program, ale aj tak aa musi autentifikovat voci db.
mas 2 moznosti ako to riesit.
dat tam medzivrstvu - nejaky idealne rest, alebo soap servis, ktory bude bezat na servri a na ktory sa bude pripajat klientsky program. vtedy nemusis v klientskom sw riesit nic co sa tyka db, lebo on bude komunikovat s tym servisom. a az ten servus pojde na db. taketo riesenie sa pouziva vo vacsich firmach, lebo ty teoreticky mozes tu db presuvat, alebo uplne zmenit - napr. z access na mssql bez toho, aby si menil klienta.
uzivatelske prava sa nastavuju bud na konkretnu db, alebo este aj v ramci db na napr. jednotlive tabulky, alebo operacie. napr. uzivatel vie citat, ale nedokaze menit zaznamy.
uzivatel si moze napisat vlastny program, ale aj tak aa musi autentifikovat voci db.
mas 2 moznosti ako to riesit.
dat tam medzivrstvu - nejaky idealne rest, alebo soap servis, ktory bude bezat na servri a na ktory sa bude pripajat klientsky program. vtedy nemusis v klientskom sw riesit nic co sa tyka db, lebo on bude komunikovat s tym servisom. a az ten servus pojde na db. taketo riesenie sa pouziva vo vacsich firmach, lebo ty teoreticky mozes tu db presuvat, alebo uplne zmenit - napr. z access na mssql bez toho, aby si menil klienta.
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.
Re: Ako správne pristupovať k databáze?
No vidím že v tomto smere mám čo ešte doháňať. Ja som si život moc nekomplikoval. Databázu aj program mám na jednom sieťovom disku a odtiaľ ho užívatelia spúšťajú a pomocou neho pristupujú k databáze. (C#, OleDb) Skúšal som aj správanie keď by sa mi na ňu pripojilo naraz viac užívatelov, a to asi takým spôsobom, že som si vytvoril programček ktorý každých pár ms požadoval niečo z databázy a ja som sa s ňou na druhej strane pokúšal pracovať. Kedže stále po dopyte pripojenie uzatváram, nedospel som dokonca ani k výnimke odopreného prístupu...
Ale, ako som googlil aspoň približne to čo ste mi popísali, tak moje riešenie by si nezaslúžilo ani pomenovanie neprofesionálne
Viete mi poradiť nejakú literatúru kde by som si vedel doplniť svoje nevedomosti?
Ďakujem
Ale, ako som googlil aspoň približne to čo ste mi popísali, tak moje riešenie by si nezaslúžilo ani pomenovanie neprofesionálne
Viete mi poradiť nejakú literatúru kde by som si vedel doplniť svoje nevedomosti?
Ďakujem
0
-
- Ultimate člen
- Príspevky: 6205
- Dátum registrácie: 20 Júl 2007, 00:00
- Vek: 41
Re: Ako správne pristupovať k databáze?
msdn, alebo https://github.com/Microsoft - tam su zdrojaky programov priamo od MS
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.
-
- Podobné témy
- Odpovedí
- Zobrazení
- Posledný príspevok
-
- 10 Odpovedí
- 1605 Zobrazení
-
Posledný príspevok od používateľa enigma
-
- 0 Odpovedí
- 1341 Zobrazení
-
Posledný príspevok od používateľa lato
-
- 13 Odpovedí
- 2046 Zobrazení
-
Posledný príspevok od používateľa hal_sk
-
- 17 Odpovedí
- 2373 Zobrazení
-
Posledný príspevok od používateľa kapor
-
- 8 Odpovedí
- 1061 Zobrazení
-
Posledný príspevok od používateľa ergo123