Stránka 1 z 1

Zabezpečení C# aplikace proti .NET Reflector

Napsal: 03 dub 2016 15:07
od lukas.sei
Čaute,
Je nějaká možnost, jak zabezpečit C# aplikace před použitím .NET Reflectoru ?
Není to kvůli zabezpečení proti crackům. Je to kvůli toho, aby někdo přes .NET Reflector nezjistil přihlašovací údaje k mojí databázi. Ta obsahuje prakticky všechen obsah mojí aplikace (uživatelské účty, seznam skupin + jejich hesla, atd..).
Předem děkuji za nějaké rady.

Re: Zabezpečení C# aplikace proti .NET Reflector

Napsal: 03 dub 2016 17:41
od satik
Není a nebyla by ani kdyby to bylo v jiném jazyce.
Tohle se řeší tak, že máš na serveru nějakou mezivrstvu, které posíláš požadavky (nejlíp s nějakou autentizací) a ta mezivrstva ti vrací výsledky.

Re: Zabezpečení C# aplikace proti .NET Reflector

Napsal: 03 dub 2016 19:58
od lukas.sei
Hm. Myslíš, že by k tomu stačilo si v MySQL přidat procedury na všechno co potřebuji (registrace, přihlášení, atd...). A vytvořit účet pro přístup do DB, který by měl práva pouze volat tyto procedury (neměl by práva na INSERT, DELETE, UPDATE, atd..). Čímž i kdyby měl to login tak by nic nemohl pokazit ?

Re: Zabezpečení C# aplikace proti .NET Reflector

Napsal: 03 dub 2016 21:04
od satik
Moc bych to neriskoval, databázi bys takhle vůbec neměl někde vystavovat přímo, nikdy nevíš, kdo se ti do toho dostane a vytáhne si třeba přihlašovací údaje i pro zápis, pokud to třeba špatně nastavíš. Nebo si přečte údaje týkající se ostatních uživatelů apod. (nevím, k jakým přesně účelům to plánuješ využít).

Re: Zabezpečení C# aplikace proti .NET Reflector

Napsal: 04 dub 2016 14:18
od lukas.sei
Dobře. Jak bys to teda řešil ty ? Mohl bys mi poslat nějakou stránku, kde by bylo popsáno, jak to udělat ? Nejlépe, aby to pochopil i nezasvěcený. :D

Re: Zabezpečení C# aplikace proti .NET Reflector

Napsal: 04 dub 2016 14:42
od satik
O žádné teď nevím, prostě ti na serveru poběží nějaká služba (klidně to může být i obyčejná PHP stránka nebo .NET služba), které se ta tvoje aplikace zeptá na data (místo toho, aby se ptala přímo té databáze).
Ta služba si řekne databázi o data a pak je pošle tvé aplikaci.
Samozřejmě nebudeš z aplikace třeba posílat ten SQL dotaz, ale jen třeba se zeptáš na seznam všech uživatelů a ta služba už bude vědět, jaký sql příkaz má zavolat...

Nevím, jestli tam budeš nějak rozlišovat data jednotlivých uživatelů - pak bys potřeboval nějakou autorizaci - třeba přihlášení nebo nějaký hash podle sériového čísla windows apod.

Re: Zabezpečení C# aplikace proti .NET Reflector

Napsal: 04 dub 2016 15:09
od lukas.sei
Jo to se mi zdá chytré. Takže prakticky bych v C# poslal dotaz do PHP (ve stylu "pošli mi seznam uživatelů"), PHP by se za mě zeptalo DB a poslalo do C# pouze odpověď ?

Akorát teda nevím jak komunikovat s PHP :D. Ale na to snad nějak příjdu.

Re: Zabezpečení C# aplikace proti .NET Reflector

Napsal: 04 dub 2016 17:23
od Eldan
1) NIKDY nepiš do aplikace žádné přihlašovací údaje.
2) Udělej si an webu api, které pošleš požadavek (/api.php?request=getDataFromTableX&token=blabla). Autentifikuj přes nějaký způsob unikátního tokenu (který nezůstává stále stejný, nýbrž se mění, klidně třeba hash času + něcp k tomu).
3) Obfuskuj, programů je na to hodně. Ačkoliv všechno je deobfuskovatelné, u mnoha způsobů obfuskace (virtualmachine a jiné monstrozity...) to stojí neskutečné množství času a úsilí, takže alespoň většinu šťouralů odradíš :)

Jak udělat požadavek na web? new WebClient().DownloadString("http://stranka.com/api.php?something") a dostaneš data co to vrátí jako plaintext.

Re: Zabezpečení C# aplikace proti .NET Reflector

Napsal: 04 dub 2016 18:36
od lukas.sei
Dobře dík. A mohl bys mi ještě prosím poslat nějakou ukázku toho api ?

Re: Zabezpečení C# aplikace proti .NET Reflector

Napsal: 05 dub 2016 10:55
od Eldan
Hledej, najdeš toho spoustu. Např. tohle vlákno na StackOverflow.

Re: Zabezpečení C# aplikace proti .NET Reflector

Napsal: 06 dub 2016 20:17
od lukas.sei
Díky. Už jsem začal tvořit api a přepisovat aplikaci, tak aby s ním pracovala. Jenže jsem teď narazil. Jak mám v C# zvládnout akci "die("nějaký erorr;")" ?
Když dám požadavek na php do Try, tak se stejně bezproblémově vykoná. Ale já potřebuji, aby když se v php zavolá "die();" ukázala ta moje aplikace chybu.

Re: Zabezpečení C# aplikace proti .NET Reflector

Napsal: 06 dub 2016 22:40
od CZechBoY
Musíš v tom C# klientovi parsovat odpověď serveru a když se tam nalezne řetězec třeba "error:" tak vyhodit chybu.
Případně použít nějakej formát, do kterýho si dáš víc informací než jen odpovědní text - např. json (status code, response text, ...).