Dobrý den,
chtěl bych se vás zeptat na doporučení a rady, jak dobře ukrýt v programu přístupové údaje k MySQL databázi, na kterou se bude program připojovat. Zkrátka jde o to, že mám program, který komunikuje se vzdálenou databází a potřebuji aby po dekompilaci programu nebyly přístupovky čitelné. Programovacím jazykem je C# a k MySQL se připojuji přes SqlConnection.
Děkuji, Matěj K.
Fórum › C / C++
C#: Jak zabránit přečtení stringu po dekompilaci programu
Pokud můžeš, tak v některých případech si lze na to vytvořit ještě nějakou veřejnou mezivrstvu s omezeným manageovaným přístupem k té databázi, v závislosti na použití třeba i v PHP nebo opět tím C# (či čímkoli jiným vhodným), ve kterém pak budeš připojeným klientům dovolovat pouze určité úkony.
Alternativně si na to ještě můžeš i nastavit nějaký nový účet k té MySQL databázi u kterého budou osekána všechna privilegia na minimum a připojovat se tam stále přímo, ovšem to obvykle už nepůjde tak dobře do detailu regulovat a nevyhneš se tomu přímému rizikovému přístupu k DB.
Nanestesti tohle nelze zajistit. Je to problem aplikaci pracujicich na localhostu. At sebelepe zasifrujes/zahashujes udaje, vzdycky budou sifrovaci klice pritomne v aplikaci a bude mozno je dohledat a nasledne pomoci nich desifrovat udaje k db.
Pouzitim hashe taky temer nicemu nelze zabranit, protoze se muze odchytit dany hash a pak ho podstrcit k pristupu k db.
Nejjistejsim a zaroven jedinym opravdovym resenim, jak zabezpecit db u aplikace z localhostu je vytvorit si na serveru nejakou proxy aplikaci, ktera bude obsluhovat pozadavky od klienta (klienta posle SQL na proxy, proxy se pripoji na db a zpracuje dotaz, vysledky posle klientovi). Takhle jedine lze opravdu zabranit precteni pristupovych udaju. Nevyhodou tohoto reseni je jista narocnost na tvorbu a obsluhu db - proxy - klient (samozrejme vcetne nejake prodlevy pri zpracovani pozadavku) a nutnost mit i server s moznosti mit spustenou nejakou webovou sluzbu nebo web obstaravajici zminenou proxy funkci.
Odlehcenou verzi je mit opet nejakou miniaplikaci na serveru, ke ktere se klient pripoji a ona vytvori SqlConnection k db a tento vytvoreny objekt poslat klientovy, ktery by jej pouzil pro naslednou praci s db. Nevyhodou tohoto reseni je opet moznost odchytit at uz sitove, nebo memory dumpem pripadne prihlasovaci udaje k db. Dale si nejsem jisty, jestli neni SqlConnection vazany na danou masinu, na ktere se vytvori instance tridy. Naopak vyhodou neni zadna prodleva jako v predchozim pripade.
Jeste odlehcenejsi verzi je prakticky to same, co predchozi pripad jen s tim rozdilem, ze se neposle klientovi instance tridy, ale samotne prihlasovaci udaje k serveru. Nevyhody jsou ty same, krom te provazanosti na masinu.
Jine moznosti me prakticky nenapadaji a vsechny vicemene potrebuji nejakou proxy aplikaci na vzdalenem serveru, protoze na klientovi pujde vzdy v urcitem bode odchytit prihlasovaci udaje (at uz drive nebo pozdeji). Nejjistejsim je prvni reseni, zde neni mozno se dostat k udajum. Dalsi 2 uz maji pripadnou diru, kde by se daly ochytit.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Pls jak zpustit z programu jinou aplikaci, a jak dělit aby zůstal zb… — založil Choco-TUx
Ako zabranit aby uzivateli menili premenne v GET — založil Koder
Jak změnit vzhled programu ? — založil Newster
[C#]Hodnocení programu a jak na něj lépe? — založil MartyMcFly1
Jak vlozit flashovou animaci do programu — založil Martin Kluska
Moderátoři diskuze