NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Erik Šťastný:14.11.2016 15:43

Zdravím, rád bych se zeptal jaké jsou vaše názory zkušenosti jak zabezpečit desktop aplikaci aby ji nikdo nezačal používat bez zaplacení. :)

Příklad: Pošlu zákazníkovy na otestování aplikaci na otestování, co se mu líbí, nelíbí atp. a jak se zajistit, že si ji nenechá přestane komunikovat a nazdar.

Jediné řešení mě napadlo podle času, nastavit v kódu nějaký čas do kterého aplikace půjde a pak už smůla, druhá věc trošku vylepšená, že by se nebral systémový čas, ale v případě připojení k internetu by se četl čas někde na internetu aby to nešlo obejít změnou času v systému.

Někdo prosím nějaké návrhy? :) díky moc

 
Odpovědět
14.11.2016 15:43
Avatar
Odpovídá na Erik Šťastný
Dominik Gavrecký:14.11.2016 16:06

Co to nápojit na nejakú API ?

Nahoru Odpovědět
14.11.2016 16:06
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Odpovídá na Dominik Gavrecký
Erik Šťastný:14.11.2016 16:10

Co tím máš konkrétně na mysli?

 
Nahoru Odpovědět
14.11.2016 16:10
Avatar
Odpovídá na Erik Šťastný
Dominik Gavrecký:14.11.2016 16:21

Kolega to riešil tak ze napojil systém na Json na svojom webe ... kde hodil názov systému mení klienta a ci je povolený alebo zakázaný ...

Nahoru Odpovědět
14.11.2016 16:21
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Odpovídá na Dominik Gavrecký
Erik Šťastný:14.11.2016 16:27

Jo to zní i hezky, ale nevidím v tom nějak výhodu ani od té časově limitované kontrolující datum na internetu.

Je to prakticky webová služba na víc proti pár řádkům kódu které smažu a překompiluju.

Nicméně ve finále obojí spočívá v tom být připojený na internet a kontrolovat na něm něco.

 
Nahoru Odpovědět
14.11.2016 16:27
Avatar
Adam Ježek
Tvůrce
Avatar
Adam Ježek:14.11.2016 16:27

Takové nejlepší řešení při poměru spolehlivost/jed­noduchost je do aplikace zakomponovaat klíče, takže při spuštění si zjistí, jestli už byl vložen a pokud ano, zkontroluje si online jeho platnost a podle toho se spustí/nespustí. K tomu si udělat malej web v PHPku, kde bude databáze klíčů a jedna stránka, která v GET dostane klíč a vrátí true/false. Když si někdo aplikaci koupí, vložíš ručně do db nějaký klíč co sis vygeneroval mlácením do klávesnice a pošleš mu ho.

Ale pokud to je pro jednoho člověka a nebude o to zájem, tak si v aplikaci hned při spuštění zjisti čas z nějakého NTP serveru, ten není závislý na systémovém času a flákni tam jednu podmínku. Až ti zaplatí, tak to zakomentuješ a uděláš znova build, který mu pošleš. Řešení je to jednoduché, ale pokud hodláš aplikaci prodat více lidem, tak zvol spíše první cestu.

Editováno 14.11.2016 16:28
Nahoru Odpovědět
14.11.2016 16:27
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
Odpovídá na Adam Ježek
Erik Šťastný:14.11.2016 16:34

Jasné druhá možnost je právě jediné co mě napadlo pro individuální aplikaci, která není pro více zájemců. Očividně to asi bude jediné spolehlivé řešení no :)

 
Nahoru Odpovědět
14.11.2016 16:34
Avatar
Adam Ježek
Tvůrce
Avatar
Odpovídá na Erik Šťastný
Adam Ježek:14.11.2016 16:39

Jediné určitě ne, ale nejjednodušší ano. Kdyby jsi sem napsal, co to má být za appku (web/dekstop/..., jazyk), tak bych určitě přišel na další věci.

Například u desktopu na win by jsi moh zapsat do registru datum prvního spuštění a po uplynutí pár dní by aplikace vyžadovala nějaký klíč (klidně i předdefinovaný v kódu), po jehož zadání by si do registrů zapsala, že už ho má a dál by fungovala. Je to podstatně složitější řešení, ale zase nemusíš klientovi posílat nový build aplikace, ale bude stačit pouze klíč.

Nahoru Odpovědět
14.11.2016 16:39
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
Odpovídá na Adam Ježek
Erik Šťastný:14.11.2016 16:43

Hnedka v nadpisu je, že jde o desktop ;) A jinak C#,

Nicméně v tomhle řešení vidím, hnedka 2 problémy, které to jednoduché řešení přes aktuální čas nemá:

  • Vůbec to neřeší instalace na jiné PC (reinstally systému apod.)
  • Popřípadě někdo šikovný si to z těch registrů může i sám odmazat zase.
 
Nahoru Odpovědět
14.11.2016 16:43
Avatar
Adam Ježek
Tvůrce
Avatar
Odpovídá na Erik Šťastný
Adam Ježek:14.11.2016 16:46

To ano, otázkou je, jak zdatnej je klient.
Taky může být v kódu předdefinovanej klíč i datum a do registrů (nebo může i jinam) si to jenom zapíše, že už to má klíč.

Nahoru Odpovědět
14.11.2016 16:46
Počkej chvíli, poradím se s křišťálovou koulí.
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Erik Šťastný
Martin Dráb:14.11.2016 16:50

Můžeš také měřit celkovou dobu, po kterou je aplikace spuštěna (nebo používána, pokud její používání znamená, že nad ní uživatel vyvíjí nějakou aktivitu) a použít tuto metriku jako jednu z indicií, že trial verze vypršela.

A jinak ty internetové metody, co tady zmiňují ostatní. Tvá aplikace by ale měla fungovat i bez internetového připojení (pokud jej nevyžaduje samotný její účel), protože stále neplatí, že internet je všude a že každý má mobilní data a chce je obětovat.

Víc je již jen o tom, jak moc dobrou ochranu chceš implementovat. Pokud třeba ty zápisy do registru uděláš moc jednoduše, tak není problém je vypozorovat (např. skrz Regmon či Process Monitor). Je to pak jen o tom, zda uživateli za to stojí tu aplikaci krást, ať už z jakéhokoliv důvodu.

Nahoru Odpovědět
14.11.2016 16:50
2 + 2 = 5 for extremely large values of 2
Avatar
Odpovídá na Adam Ježek
Erik Šťastný:14.11.2016 16:51

Jo nad tím teď přemýšlím, že to se mi líbí asi nejvíc, že bude na hardcodované, že to bude fungovat do 20.listopadu a pak se musí zadat klíč, který může být klidně v textovým souboru vedle aplikace, to už je celkem jedno.

Zdatnost klienta těžko říct, jde hlavně o to, že vyvíjím malé záležitosti třeba na 14 dní pro někoho a rád bych měl způsob kterej si jednou udělám a pak už ho jen copy pastnu do každýho kódu a budu takříkajc relativně v bezpečí proti nezaplacení :)

 
Nahoru Odpovědět
14.11.2016 16:51
Avatar
Odpovídá na Martin Dráb
Erik Šťastný:14.11.2016 16:55

To je přesne ten problém, že bez internetu mi to přijde hodně neošetřené, sám moc dobře vím jak jsem jako "malej" používal nějakou aplikaci za pár tisíc asi rok ve virtuálce a když vypršela vždy nahodil virtuálku ze zálohy a znovu dokola :-O Zvlášť když jde o aplikace pro jednoho koncového uživatele, tak může být právě to jedno zaplacení nemilé :)

 
Nahoru Odpovědět
14.11.2016 16:55
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Erik Šťastný
Martin Dráb:14.11.2016 17:30

Ono tohle právě 100 % nevyřešíš. Můžeš dělat různé fígle, abys uživateli jeho ošklivé záměry ztížil; a to je asi tak všechno.

Je otázka, zda to nezkusit hnát také trochu právně, když to technicky 100 % nejde – prostě do licenční smlouvy napsat, jakým způsobem může být aplikace použita a případně ta omezení nějakým triviálnějším způsobem vynucovat. Když je ale uživatel obejde (a ty to máš šanci poznat například tak, že nekomunikuje, ale měl by žádat o novou verzi aplikace), můžeš zkusit začít vyhrožovat právními důsledky (zvláště, když se jedná o jednoho uživatele).

Jo nad tím teď přemýšlím, že to se mi líbí asi nejvíc, že bude na hardcodované, že to bude fungovat do 20.listopadu a pak se musí zadat klíč, který může být klidně v textovým souboru vedle aplikace, to už je celkem jedno.

Zdatný klient ti najde tyto hardcodované hodnoty a upraví si je tak, jak potřebuje. Jie pravda, že mu to můžeš stížit třeba tak, že budeš mít v aplikaci kód ověřující, zda někdo tvůj soubor nezměnil (popř. že některé části kódu nebyly změněny v paměti, protože obecně není třeba dělat změny na disku, stačí krátce po spuštění), ale tím problém pouze přesuneš na tento kód. A stejně to neřeší případy, kdy bys třeba chtěl, aby byla tvoje aplikacep oužívána pouze na jednom stroji.

Nahoru Odpovědět
14.11.2016 17:30
2 + 2 = 5 for extremely large values of 2
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:14.11.2016 17:45

Zrovna v případě C# není hardcodování úplně zoufalé řešení, protože když to vypustíš jako ClickOnce (výchozí instalátor od Visual Studia) a klíč bude přímo v kódu, nespustí se to, když se v tom někdo bude hrabat. ClickOnce si totiž hlídá integritu a pokud je porušena, prostě nepoběží.

Nahoru Odpovědět
14.11.2016 17:45
the cake is a lie
Avatar
Odpovídá na Martin Dráb
Erik Šťastný:14.11.2016 17:47

Tak asi tedy zůstanu jen u toho času a podmínkou internetu pro účely testování a po zaplacení čistá kompilace s odstraněním tédle podmínky no :)

 
Nahoru Odpovědět
14.11.2016 17:47
Avatar
Odpovídá na Petr Čech
Erik Šťastný:14.11.2016 17:48

hmm to taky nezní zle o tom něco nastuduju :)

 
Nahoru Odpovědět
14.11.2016 17:48
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Erik Šťastný
DarkCoder:14.11.2016 19:33

Tak takto jednoduché to opravdu není. To, aby nikdo nezačal používat aplikaci bez zaplacení, je snadné. Ale to, co je třeba zajistit je, aby se plně funkční aplikace dále nešířila a nevyužívali ji Ti, co ji zaplacenou nemají. Už to zde padlo, bezpodmínečně si utvoř licenční podmínky ať máš kontrolu nad nežádoucími úmysly ze strany uživatele. Nabízí se několik otázek. Vyžaduje aplikace připojení k internetu či nikoli? Jakým způsobem so dozvíš, že uživatel za aplikaci zaplatil, kde se co změní? A zásadní věc, jakým způsobem sdělíš a zpřístupníš všechny dostupné možnosti aplikace uživateli? Každopádně základem je kooperace klíčů, modifikace a vytváření virtuálních souborů a využívání časových funkcí.

Nahoru Odpovědět
14.11.2016 19:33
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Avatar
Odpovídá na DarkCoder
Erik Šťastný:15.11.2016 10:07

Jak už jsem řekl, jedná se o individuální aplikace pro individuální lidi, takže bych moc neměl strach z nějakého šíření :) 99,9% lidí by pro to nikdy nenašlo žádné využití. Systém klíčů pro aplikaci pro jednoho cílového uživatele mi přijde celkem zbytečný :)

 
Nahoru Odpovědět
15.11.2016 10:07
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 19 zpráv z 19.