uložení hesla ve webconfigu   zodpovězená otázka

ASP.NET MVC, Entity Framework, Databáze

Ahoj,

chtěl bych se zeptat jestli existuje nějaké řešení, aby nebylo heslo do databáze uložené ve web.config, nebo aby bylo zašifrované a samozřejmě, aby ho mohl entity framework použít.

Nikdo se sice k web.configu nedostane, ale ten kdo má přístup na server tak se může podívat na připojení do databáze.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nikde jinde, než ve web.config to uloženo není a kdo jiný má kromě admina přístup na server?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Je možné connectionString cryptovat: http://msdn.microsoft.com/en-us/library/...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Osobně jsem nenalezl již existující způsob, který by mi vyhovoval. Řeším tedy takové situace tak, že si heslo de/kryptuji sám v rámci aplikace. V config souboru je pak pouze hash. Nechávat heslo v otevřené, čitelné, formě je jednoznačně security issue a nezáleží na tom, zda na server přístup má jeden člověk nebo tisíc.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Do web.config se z HTTP dostat nelze, proto je tam heslo bezpečné i v textové formě...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Heslo v otevřené podobě není nikdy bezpečné - vždy je cesta, jak se k takovému souboru dostat. Ať už někým zvenčí nebo interními pracovníky.

Zastávat názor, že kam se "standardní" uživatel nemůže připojit, je 100% bezpečné, je cesta do pekel a dříve nebo později Vám jej realita změní.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Když neprovozuji na webu aplikaci, kde by mi mohl někdo ukrást peníze, nebo něco cenného, tak proč by se mi někdo snažil nabourat do web.config, aby tam viděl moje heslo do DB? K čemu by mu to bylo?

A i kdyby to přeci jenom někdo udělal a něco tam udělal, tak je DB zálohovaná, obnovím data, změním heslo a jede se dál...

Ale nic vám nebrání si heslo nějak zašifrovat...

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

Asi neprogramujete profesionálně nebo nemáte zkušenosti se zákaznickým portfoliem - jinak by takový názor nemohl být snad ani zveřejněn :-) Obecně je to pochopitelné, ale silně utopistické.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Z hlediska bezpečnosti doporučovanou alternativou je pro SQL Server nepoužívat SQL Server účty, ale pouze Windows účty tj. Windows autentizaci, pak heslo v connection stringu není.

Nevýhodou je, že toto řešení nelze použít na Azure SQL Database.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Moooooc hezká utopie :)

Z bezpečnostního hlediska ... :) :)

Položme si otázku:

Pokud se ti někdo dostane k souborům na serveru, co mu brání dostat se k jakémukoli krypto-klíči ?

Neustále se v IT špatně chápe pojem "kryptace"... rozhodně to není nedobytnost, ale mělo by se chápat jako "Časová odolnost", tedy doba, kterou máte na mlasknutí dotyčného přes prsty.

Pokud se Vám k souborům na serveru dostanou lidi, co tam nemají co dělat, pak máte buď špatně zabezpečený server (chápat fyzicky / softwarově), nebo jste "datový exhibicionista" :D

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Takže si shrňme příspěvky:

do skutečného doporučení pro reálnou praxi:

- nikdy neukládat heslo do textového souboru (ani web.config) v nezašifrované podobně

- nikdy neukládat hash hesla, který se dá vypočítat (k tomu slouží pasword derived function, např. Rfc2898DeriveBytes)

- pokud to lze použít, využít Windows authetizace s uživatelem, který nemá práva na nic jiného, než číst obsah databáze, jinak není schopen se přihlásit ani na počítač vrátného

- používat pouze šifrované přenosy dat po síti tj. Https obálka se silnou verzí protokolu (viz. články Altaira Valáška)

Zní to paranoidně? Ano takový je hold současný internet a my zodpovědní programátoři s tím musíme žít. A pokud chceme být profesionálové, tak se od nás i očekává.

Jirka Pokorný

nahlásit spamnahlásit spam 3 / 3 odpovědětodpovědět

Doporučuji na toto téma můj nový článek na blogu http://www.dotnetportal.cz/blogy/15/Null..., kde je uvedeno jedno možné řešení.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback