

Program v C# ověření uživatele - jméno a heslo
Ahoj,
řeším takový "problém".
Mám program v C# v exe, který po spuštění vyžaduje zadat jméno a heslo uživatele.
Je potřeba kontrolovat jestli existuje uživatel v databázi.
Jsem si vědom toho, že C# lze přeložit do kódu.
Můj návrh řešení:
Programem vyžádat na webu kontrolu
www.mojestranka.cz/over_uzivatele?login=jemno&heslo=heslo
(ještě bych zavedl to, že kdyby někdo zkoušel brute force na tuto url, dostane ban).
Odpověď true/false.
Co vy na to?
Nepředpokládám že se někdo pokusí hackovat ten program a ani se nic závažného nestane, pokud by nějakým způsobem obešel někdo toto zabezpečení.
Nebo máte nějaký lepší návrh?
No rozhodně bych to neposílal GETem, ale POSTem. A ideálně přes HTTPS.
Ale k čemu je to vlastně dobré?
Chci aby se do programu dostal jen ten, kdo má účet na stránce a zároveň tím budu logovat jak jsou uživatelé aktivní.
Neukladej heslo v databazi, ale uloz tam je hash hesla, pripadne jeste doplneny o nejaky znak, ale to zjisti i utocnik, ktery disassembluje kod. Ale uz nebude schopny zjistit heslo.
Na databazi, pokud to umoznuje udelej ulozenou proceduru, ktera vrati, zda je to ok nebo ne. Tim zabranis pristup ke kodu overovani.
Nerozumím....
V databázi mám samozřejmě hesla kódovaná...
Při přístupu na url přijde heslo v normální podobě a url si ho sama přehashuje a ověří.
Psal jsi, že máš program v C# - předpokládám, že svůj.
Ten program musí posílat heslo už hashované, web odpoví, zda kombinace jména a hashe souhlasí s tím, co je uloženo v databázi. Pokud posíláš heslo v nezakódované podobě do URL, tak to je špatně.
Ano můj.
Dobře, ale raději jiným hashem než se hashují hesla v db. Web si to přelouská.
Zajímalo by mne k čemu toto... Jaký význam má posílat hesla v jiném hashu, než ve ktrém ho web rozpoznává? Odesílat ho v něčem jiném -> dekódovat -> kódovat... Když se ti někdo bude chctít do programu dostat, nějakou cestu si vždycky najde...
Dle mého názoru je lepší
než posílat hash, kterým mám uložený hesla. To je přeci blbost, takhle by měl útočník přímo ve zdrojáků alogritmus kterým hashuji s osoleným hashem, to je přeci kravina.
Pokud mi bude chtít někdo hacknout apku, tak mi bude muset hacknout server a tam najde algoritmus pro hashování.
C# dekompiluje každej blb, server jen tak někdo nehackne.
To, ze se utocnik dozvi algoritmus pro hash - klidne pouzij standardní algoritmus prece neznamena, ze zna heslo.
Kdyz si na webu osetris, ze po 3 neuspesnych pokusech o prihlaseni bude uzivatel odstrizen napr. na hodinu, pak utocnik nebude mit sanci ani na utok hrubou silou.
Tak pokud pošlu md5 tak tu si rozluští během 5 vteřin, ani ne. = zná heslo. Ne?
To bude, to je v plánu od začátku.
Psal jsem o hashi, ne o MD5. Co třeba SHA1? Hash algoritmu je prece vic, ne jen MD5
Ano, to je pravda.