Ochrana údajů v connection stringu v aplikaci rubrika: Programování: .Net
Ahoj chtěl bych se zeptat, jak řešíte v neserverové aplikaci (tlustí klienti se připojují přímo do databáze pod jedním uživatelem) načítání connection strigu s heslem.
Psát heslo do konfiguračního souboru v plain textu nechci.
Existují na to nějaké doporučené principy?
Díky za info, P.
Pokud je aplikace fyzicky dvouvrstvá (bez middleware vrstvy na serveru), tak databázový server musí fungovat i jako server aplikační. Což podle mne znamená především tyto věci:
- Obsahuje aplikační logiku (většinou uložené procedury, triggery)
- Stará se o práva a uživatele
- Případné požadavky na filesystem jdou přes něj
- Často je potřeba řešit práva i na úroveň řádků
Což bývá často problematické, protože mnohé SQL servery buď pro toto podporu nemají, anebo to nenabízí "hosting" (třeba ten v principu nekonečný počet zakládaných uživatelů). Proto se dvouvrstvé aplikace moc nedělají. Nicméně pokud mám server pod kontrolou a db stroj "je kvalitní" a obsahuje dostatečnou podporu pro mnou požadované akce, tak to realizovatelné je.
V tomto případě je podle mne jediné čisté řešení taková situace, kdy každý uživatel má svého uživatele založeného přímo v db (kde má nastavená své práva) a připojuje se na něj. Pak žádné jméno a heslo pro connect string není potřeba nikam ukládat, protože to je to přesně to jméno a heslo, kterým se uživatel přihlásí do aplikace.
Nějaké univerzální jméno a heslo do db pro všechny uživatele je podle mne špatná cesta protože to znamená, že tlustý klient někde něco šifruje/dešifruje (třeba požadavky na databázi) a databáze mu je v principu schopna provést více operací než na které má práva. A každé šifrování/dešifrování uložené někde na lokále lze podle mne v principu prolomit. Ať už je tím lokálem javascript aplikace v browseru, anebo .exe soubor.
Pro zobrazení všech 3 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře