Autor Téma: Riešenie licencie podľa rokov a počtu bytov  (Přečteno 371 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5295
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Riešenie licencie podľa rokov a počtu bytov
« kdy: 26-06-2020, 17:45:18 »

Chcem pri tom využiť certifikáty. Ale neviem ako riešiť samotnú podstatu.
Užívateľ môže mať každý rok iný počet bytov. Prípadne neobmedzený.
Ja chcem zachovať históriu všetkých jeho rokov a bytov. Aby nemohol ani spätne pridať rok či byty.
Vôbec netuším ako by sa to dalo zrealizovať.
.
Na úrovni aplikácie to mám urobené tak, že môže meniť údaje pre posledný a predposledný rok podľa licencie, a posledného roku zadaných údajov pre konkrétne SVB.
Vzhľadom na túto skutočnosť sa mi javia staré licencie ako zbytočné.
.
Prosím Vás o názor. Máte k tomu aj prax.
Ďakujem.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline miroB

  • Guru
  • *****
  • Příspěvků: 585
  • Karma: 17
    • Verze Delphi: D1,2,3,4,7,2005,2009, XE8,S,B,T10.2.2 Pro
Re:Riešenie licencie podľa rokov a počtu bytov
« Odpověď #1 kdy: 27-06-2020, 10:15:31 »
Nevidím nejaký problém. Či mi uniká niečo s certifikátmi?
Preto si nie som si istý, či ozaj presne rozumiem otázke.
Tak len pokus.. Pomocou databázy:
Tri tabuľky
  • tabulka intervalov, prepojená na
  • tabuľku bytov a na
  • tabuľku vlastníkov
pomocou SQL vyhľadávať, kombinácie, ktoré potrebuješ.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2923
  • Karma: 135
    • Verze Delphi: D2007, XE3, DX10
Re:Riešenie licencie podľa rokov a počtu bytov
« Odpověď #2 kdy: 27-06-2020, 11:54:56 »
Ale neviem ako riešiť samotnú podstatu.
Užívateľ môže mať každý rok iný počet bytov. Prípadne neobmedzený.
Ja chcem zachovať históriu všetkých jeho rokov a bytov. Aby nemohol ani spätne pridať rok či byty.
Vôbec netuším ako by sa to dalo zrealizovať.
.
Na úrovni aplikácie to mám urobené tak, že môže meniť údaje pre posledný a predposledný rok podľa licencie, a posledného roku zadaných údajov pre konkrétne SVB.
Ne, ze bych rozumel, v cem je problem...

Kdyz v aplikaci zajistujes, aby mohl/nemohl menit posledni a predposledni rok, proc neni mozne to rozsirit/zobecnit jeste na vsechny starsi?
--
Jinak pokud to nechces nejak odolne, tak by stacilo nastrkat data z certifikatu do DB v podobnem smyslu jako pise miroB, ale misto upravy vsech ruzne rozpytlenych SQL dotazu a pripadne inkonzistence, pokud se na neco zapomene, bych to udelat insert/update/delete triggerem, ktery by si sahnul do tabulky s udaji z certifikatu, zkontroloval datum v dotazu a pokud by neprosel podminkou, tak bych vyvolal na urovni DB exception, ta by mela odrolovat transakci a kdyz das te exception nejaky vhodny text, tak v aplikaci poznas, ze k cemu doslo a muzes to BFU zobrazit v nejake stravitelnejsi podobe.

Jestli pouzijes before/after trigger je v podstate jedno, protoze tu transakci by to mel odvolat bud jak bud. Co se ti bude delat lip.

Kdybys to chtel trochu odolnejsi, tak jako prvni po kazde kontrole certifikatu zkontrolovat jeho obraz v DB a pokud se bude lisit, tak tu aplikaci nejak zablokovat. Ale to uz zavani serii nekonecnych problemu, do kterych se nakonec chytis ty sam...


Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5295
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:Riešenie licencie podľa rokov a počtu bytov
« Odpověď #3 kdy: 27-06-2020, 11:58:51 »
Pomocou databázy asi nie. To si akosi neviem predstaviť v praxi. Hlavne jej aktualizácia a ochrana, ktorá je pri FB prakticky nulová.
Licencia sa bude musieť obnovovať pre každý rok. Pritom sa môže meniť počet bytov. Samozrejme, že predpokladám situáciu ukončenia platnosti licencie a obnovenie po nejakých rokoch (prerušenie).
Radšej by som to mal na klientovi, než by sa pri každom spustení aplikácie vykonala kontrola cez internet.
Preto predpokladám uložiť patričné údaje do certifikátu/ov. Certifikáty tu neriešim.
Ja vidím tri možnosti:
  • užívateľ bude musieť mať k dispozícii všetky certifikáty. To sa mi vidí ako veľmi nepraktické
  • všetky (roky + byty) potrebné údaje budú v poslednom certifikáte.  Viď aj prerušenie. Treba to sledovať a zostaviť požadovaný zoznam
  • v certifikáte budú len údaje za aktuálny a predchádzajúci rok. Ostatné certifikáty nebudú existovať. O zvyšok sa postará aplikácia. Spätne sa údaje nebudú môcť upravovať (zakázané Insert, Edit a Delete). Môžu sa prezerať, tlačiť, robiť z nich štatistiky ...
Predpokladám cenový model závislý (iba) od počtu bytov. Bez rozdielu sieťová a embeded verzia. Riešenie pomocou šifrovaných súborov som zamietol na základe diskusií tu na webe.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5295
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:Riešenie licencie podľa rokov a počtu bytov
« Odpověď #4 kdy: 27-06-2020, 12:02:17 »
Citace
Kdybys to chtel trochu odolnejsi, tak jako prvni po kazde kontrole certifikatu zkontrolovat jeho obraz v DB a pokud se bude lisit, tak tu aplikaci nejak zablokovat. Ale to uz zavani serii nekonecnych problemu, do kterych se nakonec chytis ty sam...
Myslím si, že toto nemusím riešiť. Kúpil som si Obsidium (skúsenosti ešte nemám) a tam je aj kontrola certifikátu na kontrolný súčet.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5295
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:Riešenie licencie podľa rokov a počtu bytov
« Odpověď #5 kdy: 27-06-2020, 12:06:11 »
Ešte upresňujem svoju predstavu. Na každom mieste, kde budem potrebovať údaje o počte bytov (roku), si ich načítam z certifikátu. Overím a podľa výsledku zareagujem. Údaje ihneď zahodím. Kvôli bezpečnosti ich nechcem mať pri behu aplikácie načítané natrvalo na jedinom mieste.
Nepožadujem robustnú ochranu.
« Poslední změna: 27-06-2020, 12:08:18 od Stanislav Hruška »
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1063
  • Karma: 47
    • Verze Delphi: 10.3
Re:Riešenie licencie podľa rokov a počtu bytov
« Odpověď #6 kdy: 27-06-2020, 13:20:24 »
Můžeš každému uživateli poskytnou licenční soubor, ve kterém bude:
- seznam roků a počet bytů, které smí v tom kterém roce spravovat
- jméno uživatele, na kterého je licence vystavena (aby to nelákalo ji poskytovat někomu dalšímu)
- nějaká forma elektronického podpisu výše uvedených údajů (podepisování certifikátem a kontrolu jsem ještě nikdy nedělal, tak s tím moc neporadím - já používal jen nějaký vlastní kontrolní součet)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5295
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:Riešenie licencie podľa rokov a počtu bytov
« Odpověď #7 kdy: 27-06-2020, 13:37:14 »
Ďakujem všetkým za reakciu. Na základe uvedených príspevkov sa už rozhodnem.
Uvažujem s dvoma certifikátmi:
  • základný - údaje o majiteľovi licencie, ktoré budú na každej tlačovej zostave
  • licenčný - údaje o zakúpených licenciách
Citace
jméno uživatele, na kterého je licence vystavena (aby to nelákalo ji poskytovat někomu dalšímu)
To bude poistené aj kontrolným súčtom. Idem si naštudovať Obsidium. Okrem toho mám k dispozícii aj TMSCrypto, kde sú tiež certifikáty. Najprv si porovnám ich možnosti a prácu s nimi.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2923
  • Karma: 135
    • Verze Delphi: D2007, XE3, DX10
Re:Riešenie licencie podľa rokov a počtu bytov
« Odpověď #8 kdy: 27-06-2020, 14:21:48 »
Citace
Kdybys to chtel trochu odolnejsi, tak jako prvni po kazde kontrole certifikatu zkontrolovat jeho obraz v DB a pokud se bude lisit, tak tu aplikaci nejak zablokovat. Ale to uz zavani serii nekonecnych problemu, do kterych se nakonec chytis ty sam...
Myslím si, že toto nemusím riešiť. Kúpil som si Obsidium (skúsenosti ešte nemám) a tam je aj kontrola certifikátu na kontrolný súčet.
Ale ne, to bylo mysleno jinak... Tak polopaticky:

- vystavis certifikat, ve kterem je napr. seznam jednotlivych bytu od zacatku, staci napr. 1. hodnota aktualni rok a pak reverzni seznam poctu bytu oddeleny carkou ev. nejaky hexdump, je to jedno
- pri nacteni certifikatu z nej ty hodnoty ziskas podobne jako bys ziskal jmeno, rozparsujes a muj navrh byl vlozit si ten seznam do DB, pokud tam dosud zadny neni a odtamtud brat hodnoty a na jejich zaklade to blokovat trigerrem
- pri dalsim spusteni aplikace a nacteni certifikatu zkontrolovat, jestli v DB hodnoty uz jsou a pokud ano, tak jestli odpovidaji obsahu certifikatu, stejne jako zkontrolovat, jestli existuji triggery a jsou aktivni

Timto zpusobem se zbavis kutilu, kteri si spusti nejaky SQL manager a zedituji ti DB, ale kdyz to v DB nechces, tak na to zapomen

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5295
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:Riešenie licencie podľa rokov a počtu bytov
« Odpověď #9 kdy: 27-06-2020, 16:04:40 »
Citace
Timto zpusobem se zbavis kutilu, kteri si spusti nejaky SQL manager a zedituji ti DB, ale kdyz to v DB nechces, tak na to zapomen
Jaj, takto. Predpokladám, že pri ručnej editácii DB narobia viac škody ako úžitku. Museli by presne vedieť čo, kde a ako.
Ale túto možnosť určite zvážim. Páči sa mi. Už sme sa bavili o ochrane FB. Bolo mi vysvetlené, že vlastne žiadna neexistuje. Čo som si potom potvrdil aj na internete.
FB 3 je na tom lepšie ako FB2.5. No naštudované to nemám.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5295
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:Riešenie licencie podľa rokov a počtu bytov
« Odpověď #10 kdy: 27-06-2020, 16:26:05 »
Už len poznámka: pozrel som sa na Obsidium a TMS X509 certificates. Ten od TMS má podstatne viac vlastností - možností zadania údajov. Niekoľko násobne viac.
Zhruba 2 x :)
« Poslední změna: 27-06-2020, 16:42:48 od Stanislav Hruška »
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5295
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:Riešenie licencie podľa rokov a počtu bytov
« Odpověď #11 kdy: 19-07-2020, 21:45:26 »
Nakoniec som sa rozhodol, že údaje o rokoch a bytoch budú v certifikáte. Tam nie je problém s dĺžkou "string", počtom položiek a nemusím riešiť nejakú ochranu DB. Akurát pri vydávaní nových certifikátov bude trocha viac roboty. Bude sa musieť vždy generovať nový certifikát s doplneným novým rokom a počtom bytov. Do nového licenčného súboru potom uložiť informáciu o ňom (serialNumber). Kvôli overeniu, či tie dve veci patria k sebe.
Je to trocha škriabanie sa ľavou rukou za pravým uchom. Ale to ma neštve, lebo certifikáty a licencie nebudem vydávať ja 8)
Som presvedčený, že takáto ochrana je viac než dostatočná. A to ešte pridám aj virtualizáciu kódu, ktorá zaisťuje, že daný kód sa dá obnoviť len ťažko.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.