Zabezpieczenie programu - odczyt ID pendriva

Zabezpieczenie programu - odczyt ID pendriva
XA
  • Rejestracja:ponad 13 lat
  • Ostatnio:11 miesięcy
  • Postów:65
0

Hej ;-)
Napisałem program i chciałbym zabezpieczyć.
Planuję program dostarczać na jakimś PENDRIVIE, i przy starcie aplikacji sprawdzanyby był ID pendriva
Tutaj znalazłem coś takiego:
http://stackoverflow.com/questions/450009/how-to-get-serial-number-of-usb-stick-in-c-sharp
sprawdzany jest PNPDeviceID
Teraz pytanko moje, czy każdy USB ma inny numer, czy są one jednakowe dla np. danej firmy?

Albo czy macie jakiś inny sposób, aby zabezpieczyć w jakiś sposób, aby aplikacja była tylko uruchamiana z tego pendriva który dostarczę?

kaczus
  • Rejestracja:około 10 lat
  • Ostatnio:około godziny
  • Lokalizacja:Łódź
  • Postów:1402
4

Czyli znowu okaże się, że albo program nie będzie wart używania go, albo wygodniej będzie używać dla zwykłego użytkownika wersję piracką niż oryginalną....


Ogólnie na prace domowe mam stawki zaporowe. Czasem coś o programowaniu znajdzie się na mojej stronie
szogun1987
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 7 lat
  • Lokalizacja:Lublin/Gdynia
0

W przypadku sprzedaży programu do firm chroni cię nadgorliwość naszych urzędów skarbowych, które to lubią robić kontrole. Interesuje ich głównie czy firma posiada wszystkie programy, na które przedstawia faktury, ale jeżeli wykryją sytuację odwrotną (firma używa programu, którego nie kupiła) kierują sprawę do odpowiednich służb.
W przypadku osób prywatnych jest trudniej, nie muszą one posiadać rachunków za zakupione oprogramowanie. I nawet w przypadku kontroli jeżeli osoba się nie przyzna to nie da jej się udowodnić, że programu nie kupiła.
Moim zdaniem najuczciwszym rozwiązaniem jest powiązanie zakupu licencji z jakimiś dodatkowymi usługami, nad którymi masz kontrolę. Przykładem takiej usługi może być konsultacje telefoniczne, x godzin szkolenia z obsługi programu, automatyczny backup w chmurze (twojej chmurze). Tego typu podejście sprawia, że ludzie, którzy płacą zyskują więcej korzystając z twojego programu niż ci, którzy piracą. Oczywiście musi się ono odbić w cenie licencji.


szogun
A3
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 9 lat
  • Postów:5
0

Kolega pytał jak powiązać aplikację z pendrive a nie jaki model biznesowy obrać. Jak nie macie nic do powiedzenia to lepiej chyba nie pisać bzdur.

spartanPAGE
Nie ma co, samiec alfa! Jeśli będziesz topił się w szambie to możesz być pewien, że poinstruuję Cię jak to zrobić najbardziej efektywnie.
szogun1987
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 7 lat
  • Lokalizacja:Lublin/Gdynia
0

Dla mnie jest to typowy wątek typu:
Q: "Jak zrobić bla bla bla?"
A: "Nie rób tego."


szogun
Bartosz Wójcik
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 4 lata
  • Postów:439
2

Jeśli potrafisz to wygeneruj sobie klucz szyfrujący, kluczem szyfrującym poszyfruj metody w aplikacji .NET (przyda się np. biblioteka Mono.Cecil).

Mając klucz szyfrujący -> zaszyfruj go identyfikatorem sprzętowym tego pendrive i taką licencję udostępnij klientom.

Na pendrive możesz nagrać dowolne dane binarne i one mogą posłużyć jako ID sprzętowe, najlepiej połączyć kilka elementów np. daty utworzenia + serial urządzenia + dane z jakiegoś pliku na pendrive + np. stopień zagłębienia pliku aplikacji na dysku (jak ktoś przegra na HDD i nie będzie trzymał na tym samym poziomie zagłębienia jak na USB to wynikowy identyfikator będzie inny). Najlepiej te dane połączyć i obliczyć z tego hash, przykładowo SHA-512 (w żadnym wypadku CRC32 lub innych krótkich hashy, bo łatwo to złamać metodami brute force).

Po uruchomieniu aplikacji:

  1. Wygeneruj hardware id jak opisałem wyżej
  2. Odszyfruj właściwy klucz szyfrujący zawarty w pliku licencji (bez żadnego sprawdzania poprawności, sum kontrolnych, chyba, że prostych np. 16 bitowych)
  3. Dynamicznie odszyfruj każdą metodę zaszyfrowanej aplikacji C# przy próbie jej wykonania.

Zalety

  1. Trudne to zrzucenia z pamięci jeśli metody są indywidualnie szyfrowane i deszyfrowane jedynie przy próbie wywołania
  2. Niemożliwe do złamania przy zastosowaniu odpowiedniego szyfrowania ECC/RSA + AES bez poprawnego USB

Wady

  1. Wymagana jest znajomość technik modyfikacji aplikacji C# i wstrzyknięcia zaszyfrowanych fragmentów + kodu deszyfrującego
  2. Ktoś, gdzieś może przechwycić ten uniwersalny klucz szyfrujący mając do dyspozycji oryginalny USB
  3. Każdy pendrive musi być indywidualnie przygotowywany

Jeśli za trudne byłoby szyfrowanie metod aplikacji, spróbuj tak zaszyfrować ważne dane aplikacji, tablice bajtów, pliki, stałe.

Pamiętaj też o odpowiednim zabezpieczeniu aplikacji .NET, bo całkiem sporo aplikacji może być użytych przeciwko takiemu zabezpieczeniu:

http://www.secnews.pl/2011/11/17/narzedzia-do-analizy-aplikacji-net/

0

Nie ma co wymyślać koła na nowo wymyślając zabezpieczenia które dużo łatwiej ominąć niż przygotować
Można użyć gotowych rozwiązań w postaci kluczy sprzętowych - klucze sprzętowe można kupić i rozprowadzać z aplikacją a aplikacja nie musi być indywidualnie przygotowywana

Ale KAŻDE zabezpieczenie można złamać - jeszcze nie powstał program ani gra, ani nawet platforma sprzętowa której nie złamano

Bartosz Wójcik
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 4 lata
  • Postów:439
0

Tak mówią ludzie, którzy nigdy zabezpieczeń na oczy nie widzieli. Są setki aplikacji, których zabezpieczeń nikt nigdy nie złamał, bo wymagałoby to takiego nakładu pracy, wiedzy, doświadczenia i środków finansowych, żeby jednocześnie egzystować i łamać te zabezpieczenia, na które nikogo po prostu nie stać. To tak samo jak powiedzieć, że wszystko jest możliwe. To ja się pytam dlaczego Polska nigdy nie wygrała Eurowizji skoro wszystko jest możliwe? ;)

Przykładem zabezpieczeń NIE DO ZŁAMANIA są aplikacje, których fragmenty procedur i funkcji umieszczone są na serwerze i program komunikuje się np. przez SOAP lub jakiś inny protokół. I jak to złamiesz skoro wersja demo nie posiada tej funkcjonalności, a nawet jak uzyskasz login klienta i hasło do pełnej wersji aplikacji to możesz jedynie z tego skorzystać, a nie ukraść i skopiować, żeby np. potem sprzedawać. Będziesz rozdawał login kolegi, który kupił program? To szybko Cię zbanują po stronie serwera. Kodu z serwera też nie ukradniesz, bo już widzę jak będziesz przełamywał zabezpieczenia serwerowe niczym Trinity w Matrixie.

Klucze sprzętowe są dobrym rozwiązaniem jeśli są poprawnie zastosowane. Jeśli wpiszesz w google "dongle emulator" to zobaczysz, że sporo z nich jest już tak znanych, że powstało wiele emulatorów, gdzie wystarczy zrzucić pamięć klucza i sterownik systemowy będzie udawał fizyczny klucz. Często klucze sprzętowe mimo jakichś ciekawych metod zabezpieczających są używane bezmyślnie, tzn. całe zabezpieczenie opiera się np. na 1 checku IsDonglePresent(), co jest banalne do usunięcia. Jak ktoś się już szarpnie z przeczytaniem dokumentacji klucza to oprócz sprawdzania samej obecności klucza zczyta z niej 2 zmienne GetDongleInteger() lub doda timer sprawdzający obecność klucza :), tak niestety często wyglądają realia, ponieważ programiści myślą, że sam dongle magicznie wszystko ochroni. Więc aplikacja MUSI być indywidualnie przygotowywana, bo integracja z kodem źródłowym to podstawa w tego typu zabezpieczeniach. Klucze takie jak np. HASP posiadają dodatkowo tzw. envelope czyli exe-protector, jednak zastosowanie samego "kopertowania" jak to pokracznie tłumaczy się na język polski, nie jest wystarczające. O kluczach HASP i metodach zabezpieczeń sam trochę pisałem:

http://www.secnews.pl/2009/05/06/hasp-envelope/
http://www.secnews.pl/2010/03/29/hasp-i-visual-foxpro-9/
http://www.secnews.pl/2012/01/27/datahasp/

Wymyślanie własnych zabezpieczeń, nieszablonowych jest dobrą metodą zabezpieczającą jeśli się wie co się robi i jakie są tego wady i zalety. Gotowe rozwiązania mają też to do siebie, że metody ich łamania są często udokumentowane, a czasami są po prostu dostępne gotowe programy, które pozwalają automatycznie te zabezpieczenia usuwać, przykładem niech będzie uniwersalny deobfuscator de4dot do chyba wszystkich systemów zabezpieczających aplikacje .NET

kaczus
  • Rejestracja:około 10 lat
  • Ostatnio:około godziny
  • Lokalizacja:Łódź
  • Postów:1402
0

@Bartosz Wójcik Są aplikacje, których po prostu nie opłacało się po łamać. Teoretycznie złamać można każde zabezpieczenie, ale musi to być opłacalne. Jeśli chodzi o SOAP (jak i inne usługi dostępne online) też złamać się da, ale jest to trudniejsze - bo najpierw trzeba by wiedzieć, co dane funkcje robią. Dodatkowo włamanie jest łatwiejsze do wykrycia i zmiany na serwerze mogą spowodować, że nasze obejście nie będzie działać, stąd też i opłacalność mniejsza, bo po wykryciu trzeba będzie znowu uaktualniać obejścia.

Dodatkowo - o czym pisałem, zrezygnowałem z używania niektórych gier/programów właśnie ze względu na to, że było to niewygodne w użyciu - jednego programu np używałem wersję piracką (mając kupioną oryginalną), właśnie z tego względu, że zabezpieczenia były upierdliwe w używaniu.


Ogólnie na prace domowe mam stawki zaporowe. Czasem coś o programowaniu znajdzie się na mojej stronie
0
Bartosz Wójcik napisał(a):

Przykładem zabezpieczeń NIE DO ZŁAMANIA są aplikacje, których fragmenty procedur i funkcji umieszczone są na serwerze i program komunikuje się np. przez SOAP lub jakiś inny protokół. I jak to złamiesz skoro wersja demo nie posiada tej funkcjonalności, a nawet jak uzyskasz login klienta i hasło do pełnej wersji aplikacji to możesz jedynie z tego skorzystać, a nie ukraść i skopiować, żeby np. potem sprzedawać.

mówimy o łamaniu zabezpieczeń aplikacji i urządzeń do których mamy dostęp fizyczny (czyli aplikacje lokalne)
wiadomo że jeżeli aplikacja jest tak naprawdę na serwerze to nie ma czego do łamania, więc jej nie złamiemy

zgadzam się - aplikacji online się nie da złamać (chyba że mają błędy na to pozwalające), ale nie wszystkie aplikacje mogą być tylko online (żadna firma nie będzie chciała korzystać z programu od którego zależna jest firma jeżeli ta aplikacja będzie zależna od dostępu do Internetu - awaria dostępu do sieci nie może znaczyć przestoju w funkcjonowaniu firmy)

Bartosz Wójcik
Skąd masz takie informacje, że żadna firma nie będzie chciała korzystać? A korzystają firmy z usług online, SaaS, emaila ;) ? To dlaczego by nie miały korzystać z aplikacji, które wymagają połączenia z internetem? Ty korzystasz z poczty polskiej do wysyłania listów bo bez internetu email może Cię zawieść?
0

To ja się pytam dlaczego Polska nigdy nie wygrała Eurowizji skoro wszystko jest możliwe?

możliwe = musiało się już zdarzyć? :| jakieś problemy z logiką?

Bartosz Wójcik
Raczej z twoją wyobraźnią.
Bartosz Wójcik
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 4 lata
  • Postów:439
0

@kaczus czy ty wiesz o czym mówisz? Masz funkcję na serwerze "Calculate()", która przetwarza binarne dane i po wejściu i wyjściu będziesz wiedział co robi? Masz kryształową kulę, która Ci to podpowie? Jesteś tak genialnym analitykiem, że potrafisz z samego spojrzenia na dane wejściowe i jakiś kontekst odtworzyć w myślach algorytmy, które utworzyły zlepek wyjściowych danych? Włamanie na serwer też nie jest taką łatwą sprawą.

Zobacz pozostałe 32 komentarze
Bartosz Wójcik
Pff ciężko mi powiedzieć, może być tak, że wysyłane są komendy wygeneruj_przedmiot() albo sprawdz_czy_masz_przedmiot(), zwłaszcza jeśli wszystkie informacje o graczu i jego itemach są dostępne po stronie serwera, nie chcę zgadywać bo po prostu nie znam tego tematu.
vpiotr
@Bartosz Wójcik: ja nie muszę wierzyć, bo to robiłem. Z tym że oczywiście dla prostych wyrażeń. Tu masz listę wyrażeń na których można sobie testować takie wnioskowanie: http://www.gpbenchmarks.org/wiki/index.php?title=Problem_Classification, oczywiście algorytmów typu MPEG-4 w ten sposób nie odgadniesz (chociaż może kiedyś się da).
vpiotr
@Bartosz Wójcik: a co do włamywaczy to wystarczy że uruchomisz w sieci jakiś popularny skrypt PHP (wordpress, drupal, phpbb, phpmysql) bez dodatkowych zabezpieczeń. Pierwsze próby włamania pojawiają się jakoś tak po tygodniu. Masz swój serwer w sieci? Zabezpieczyłeś SSH? Ja przed zabezpieczeniem miałem setki (jeśli nie tysiące) prób włamania dziennie na nowym serwerze.
Bartosz Wójcik
@vpiotr od ponad roku mam swój serwer, więc wiem jak to wygląda, ale też bez przesady, najnowsze wersje tych skryptów PHP nie są domyślnie podatne na ataki, tym bardziej, że to jedne z najczęściej używanych systemów. Mojemu kumplowi się włamali na WP chyba z 3 razy, bo miał hasło jordan23 ;) i nie kminił, że boty skanują sieć i testują również logowanie na popularne hasła. SSH zmieniłem port od razu, autoryzacje tylko przez klucze + fail2ban.
vpiotr
@Bartosz Wójcik: Formy włamania są różne, u mnie było wykorzystane np. 0day. Więc dlaczego się dziwisz że ktoś może coś wykraść z serwera?
0

To o czym piszesz nie ma nic wspólnego z łamaniem aplikacji tylko z dostępem do usługi (w tym przypadku usługa polega na policzeniu czegoś)
Tak jakbyś porównywał ograbienie kogoś z portfela do zmuszania go do sprzątania w Twoim domu za darmo - całkowicie dwie różne rzeczy

Do świadczenia usług za darmo jeszcze nikt nikogo nie przekonał, ale mało to ma wspólnego z zabezpieczeniami

Za to na przykład takie usługi jak serwery multiplayerowe o ile nie zostały "złamane" bo nie da się z nich korzystać bez wykupienia abonamentu na usługę to jednak powstają alternatywne pirackie serwery i klienty pozwalające się do nich łączyć

Bartosz Wójcik
Usługi oparte np. na SOAP to rzeczywistość i możesz nie wierzyć, ale są zintegrowane z aplikacjami ;), jeśli na tym oparty jest model zabezpieczenia to jak to nie ma nic wspólnego z łamaniem aplikacji? To, że coś się nie mieści w twoich schematach myślenia, nie znaczy, że nie istnieje.
0

Usługi oparte np. na SOAP to rzeczywistość i możesz nie wierzyć, ale są zintegrowane z aplikacjami ;), jeśli na tym oparty jest model zabezpieczenia to jak to nie ma nic wspólnego z łamaniem aplikacji? To, że coś się nie mieści w twoich schematach myślenia, nie znaczy, że nie istnieje

Aplikacje online, przeglądarkowe - też mogą korzystać z SOAP do wymiany danych z serwerem jeżeli ma to jakiekolwiek znaczenie

Uważasz że "łamanie" facebooka (który jakby nie było jest aplikacją) można porównywać ze złamaniem programu który masz na komputerze i że ma to cokolwiek ze sobą wspólnego?

Wszystko da się złamać jeśli jest to opłacalne - zazwyczaj najsłabszym ogniwem jest człowiek - w przypadku który opisujesz można na przykład zatrudnić się w firmie wytwarzającej te oprogramowanie lub odpowiednio dużo zapłacić obecnemu pracownikowi za wykradnięcie kawałka kodu.
Można też zorganizować DDoS i oduczyć firmę tworzenia oprogramowania w 100% polegającego na dostępności serwera

Podtrzymuję że nie ma to nic wspólnego z łamaniem oprogramowania - jeśli klient działa i porozumiewa się z serwerem to nie ma tu niczego do łamania; można się jedynie włamywać

Zobacz pozostałe 3 komentarze
kaczus
Za dużo filmów, za mało rzeczywistości widzę... Ale jak napisałem, wierz sobie w co chcesz i że zabezpieczenia wyglądają tak jak w filmie i że tak się je łamie.
Bartosz Wójcik
@kaczus to ty tu wciskasz wszystkim kit, że jesteś w stanie domyśleć się co robią funkcje zawarte po stronie serwera, do którego nie masz dostępu, a teraz jeszcze odwracasz kota ogonem :), napisz wszystkim jak wyglądają twoje zabezpieczenia oprogramowania i jak ty się rozprawiasz z cudzymi?
kaczus
To Ty twierdzisz, że ja tak twierdzę, ja twierdzę tylko, że w przypadku niektórych funkcji jest to możliwe - ale nie wszystkich. Czytanie ze zrozumieniem przerabiało się kiedyś w szkole podstawowej. Brak patrzenia na kwantyfikatory w naukach ścisłych jest niedopuszczalny....
Bartosz Wójcik
Zdradź mi zatem co robi funkcja dodająca / odejmująca 2 liczby A i B w zależności od różnych warunków umieszczona w skrypcie na http://www.secnews.pl/calc4p.php?a=1&b=2 (zmień sobie parametry A i B dowolnie) i przedstaw dokładny algorytm, tak, że jeśli byłoby to elementem zabezpieczenia, można by było ten algorytm dopisać do aplikacji, tak że wszystko by działało bez dostępu do internetu. Wyjmij swoją magiczną kulę i działaj :)
kaczus
obalanie twierdzenia z kwantyfikatorem istnieje poprzez przykład który nie spełnia założeń - rozkoszne i jakie profesjonalne
0

Potwierdziłeś właśnie to co pisałem od samego początku, że takie zabezpieczenia oparte o zapytania do serwera są niemożliwe do złamania bez ingerencji w serwer

Nie - jeśli zabezpieczenie polega na odpytaniu serwera czy mamy uprawnienia to wystarczy zmockować serwer lub wyrzucić ten fragment kodu z aplikacji - wtedy aplikacja jest do złamania
Jeśli aplikacja jest tylko pustą powłoką, klientem wysyłającym żądania do serwera a właściwa aplikacja jest po stronie serwera to nie da się jej złamać bo nie mamy do niej dostępu
Nie możemy jej złamać z tego samego powodu z jakiego nie możemy złamać aplikacji której w ogóle nie posiadamy

Tak więc podtrzymuję

  1. Każdą aplikację da się złamać jeśli mamy do niej dostęp
  2. Nie da się wymusić nieautoryzowanego dostępu do zdalnej usługi (to o czym cały czas piszesz twierdząc że usługa = zabezpieczenie aplikacji)
Bartosz Wójcik
Wyrzucisz fragment kodu z aplikacji, który odpowiada np. za ważną funkcjonalność dostępną jedynie w pełnej wersji, a uzyskiwaną jedynie poprzez zdalne zapytanie do serwera przez licencjonowanego użytkownika? I aplikacja będzie niezdatna do użytku. Rozumiesz w ogóle jak działają zapytania RPC czy SOAP i że mogą za tym stać całe algorytmy przetwarzania danych, a nie jedynie jakieś sprawdzanie uprawnień? I że aplikacja może być podzielona i jedynie kilka kluczowych elementów może być po stronie serwera (nie musi to być klient końcowy - "pusta powłoka" jak to określasz").
0

Rozumiesz w ogóle jak działają zapytania RPC czy SOAP i że mogą za tym stać całe algorytmy przetwarzania danych, a nie jedynie jakieś sprawdzanie uprawnień? I że aplikacja może być podzielona i jedynie kilka kluczowych elementów może być po stronie serwera

No to właśnie nosi znamiona usługi
Nie każdą aplikację da się tak zorganizować i znacznie to podnosi koszty programisty - praktycznie niemożliwe jest sprzedawanie pojedynczych licencji tylko licencji ograniczonych czasowo - musisz ze swojej kieszeni płacić za prąd który zużyją serwery do prowadzenia kluczowych obliczeń - coś co normalnie działoby się po stronie klienta. Poza tym dochodzi samo utrzymywanie serwerów przez x lat, wsparcie, cała infrastruktura jeżeli chcemy obsługiwać w rozsądnym czasie dużą liczbę zapytań

Tak jak wspominałem nie każda aplikacja może być jedynie klientem usługi (nie ma znaczenia czy oprócz bycia klientem usługi ma jeszcze jakąś funkcjonalność czy nie) choć jest to najlepszy sposób na ograniczenie funkcjonalności nielicencjonowanym użytkownikom (nie ma nic wspólnego z zabezpieczeniami aplikacji)

Bartosz Wójcik
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 4 lata
  • Postów:439
0

No oczywiście, że to nosi znamiona usługi, ale nie do końca. Pokaż mi dzisiaj firmę bez zaplecza serwerowego. Obsługa kilku kluczowych elementów przetwarzania danych w programie wcale nie musi być takim obciążeniem dla serwerów, a potencjalny zysk w postaci naprawdę solidnego zabezpieczenia powinien wynagrodzić te dodatkowe koszty programistyczne. Jeśli faktycznie takim obciążeniem byłyby obliczenia to mamy Heroku, Azure i AWS.

Nawet małe firmy byłoby stać przerzucić np. jedną funkcję obliczeniową na serwer i udostępnić ją jedynie licencjonowanym użytkownikom, dla przykładu jakaś firma produkująca oprogramowanie do księgowania mogłaby przerzucić kalkulacje z oprogramowania desktopowego na serwer. Realizacja jakichś obliczeń byłaby banalna do zrealizowania nawet w PHP, obciążenie znikome (większe obciążenia na serwerach generują spamboty), zapytania przez POST, komunikacja/autoryzacja przez HTTPS, a efektem końcowym jest to, że żaden crack / keygen / serial by do tego nie wyszedł, nikt by też nie publikował swoich danych licencyjnych publicznie, bo równie szybko by został zablokowany przez producenta. Jedyną opcją byłoby to, że jakiś geniusz-analityk by się "domyślił" jak dokładnie w 100% działają te kalkulacje i dopisał kod do programu (co już samo w sobie byłoby trudne) lub Trinity z Matrixa by się włamała na serwer :)

kaczus
Większość firm nie działa obecnie na serwerach w firmie, jeśli chodzi o usługi zewnętrzne. Serwery w firmach obecnie zaspokajają wewnętrzne potrzeby, bo łatwiej jest je chronić przed włamaniem nie wystawiając ich na zewnątrz, a żeby skutecznie chronić przed włamaniami i awariami trzeba mieć do tego odpowiednich ludzi i stały monitoring (nie wspomnę już, że trzeba mieć co najmniej 2 łącza do firmy, jeśli chcemy świadczyć usługi na poziomie). Więc usługi często usługi zewnętrzne wykonuje się na serwerach wynajętych od firm świadczących usługi hostingowe.
0

Żadna aplikacja księgowa nie może działać tylko przy dostępie do Internetu
Mało która firma w ogóle zgodzi się żeby jej dane księgowe (czy jakiekolwiek) były przesyłane wte i wewte przez Internet przez politykę ochrony danych, a co chcesz liczyć na zewnętrznym serwerze bez dostępu do tych danych?

W ogóle nie może dojść do sytuacji że brak Internetu = brak firmy, dla niektórych firm byłyby to straty rzędu setek tysięcy

Takie "zabezpieczenia" sprawdzą się raczej w aplikacjach których zaprzestanie działania nikomu nie wyrządzi krzywdy

Bartosz Wójcik
Internet jest podstawą działania wielu firm i argumentacja, że wszystko ma działać bez dostępu do internetu byłaby prawdziwa z 15 lat temu. Firmy bazują na kontaktach email, VPN, bazach danych, usługach SaaS, płatnościach online, dlaczego by nie miały funkcjonować z jeszcze jednym elementem, który wymaga dostępu do sieci? Skoro sam mówisz, że brak internetu = brak firmy to znaczy, że ten internet jest i dba się o to, żeby dostęp do niego był bezawaryjny. Poza tym jak internet "padnie" to te pozostałe usługi też, polecisz na pocztę polską wysłać zapytanie SQL telegramem? :)
0

Internet jest podstawą działania wielu firm i argumentacja, że wszystko ma działać bez dostępu do internetu byłaby prawdziwa z 15 lat temu. Firmy bazują na kontaktach email, VPN, bazach danych, usługach SaaS, płatnościach online, dlaczego by nie miały funkcjonować z jeszcze jednym elementem, który wymaga dostępu do sieci? Skoro sam mówisz, że brak internetu = brak firmy to znaczy, że ten internet jest i dba się o to, żeby dostęp do niego był bezawaryjny. Poza tym jak internet "padnie" to te pozostałe usługi też, polecisz na pocztę polską wysłać zapytanie SQL telegramem? :)

Po pierwsze - proszę, zacznij odpowiadać normalnie - komentarze nie są od tego

Zapytania SQL lecą do lokalnego serwera więc nie potrzeba łączności z zewnątrz - mail, płatności mogą godzinę / dwie poczekać, ale klient który właśnie przyszedł i złożył zamówienie nie może
Dąży się do bezawaryjności ale nie da się tego w praktyce osiągnąć.
Obecnie pracuję właśnie nad aplikacją która ma opcję synchronizacji danych pomiędzy oddziałami firmy w wielu miastach - jednym z głównych założeń jest to że wszystko ma działać na najnowszych danych, ale jednocześnie musi działać bez Internetu; dane mają się kumulować podczas przerwy w dostawie - gdy Internet powróci dane mają się zsynchronizować (zmergować) z powrotem
I takie przestoje w działaniu zdarzają się i to dość często (co najmniej raz na pół roku) mimo że Internet jest z dwóch niezależnych źródeł

Bartosz Wójcik
Zaloguj się na swoje konto i również możesz komentować. I jaki jest problem w tym, żeby element zabezpieczenia również na tym bazował? Mi się wydaję, że szukasz problemu tam gdzie go nawet nie ma.
RE
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:12 miesięcy
1

@myśleżejestem: obudź się, mamy 2015 rok. Co druga firma wymaga dzisiaj internetu do działania i jakoś nie widzę, żeby upadały bo uptime łączności wynosi 99,9% zamiast 100%.

0
Rev napisał(a):

Co druga firma wymaga dzisiaj internetu do działania i jakoś nie widzę, żeby upadały bo uptime łączności wynosi 99,9% zamiast 100%.

no tak, bo nie mają oprogramowania które je wtedy praliżuje

0

Poza tym jak sobie to wyobrażacie? Pada firma która dostarczała oprogramowanie i padają wszystkie programy które tworzyła dla wszystkich firm?
Jak daleko może pójść zaufanie do firmy dostarczającej oprogramowanie?
Mamy przesyłać do firmy trzeciej jakieś dane o których sami nic nie wiemy, ta firma będzie je dla nas przetwarzać i zwracać a działanie naszej firmy ma być uzależnione od działania tamtej firmy?

A to wszystko tylko po to żeby tamta firma miała pewność że to my nie próbujemy się połączyć bez licencji?
Mówiąc prosto: mamy im zaufać w 100% tylko po to żeby oni mogli nie ufać nam

Bartosz Wójcik
A wyobraź sobie, że pada firma dostarczająca oprogramowanie, problemy z kompatybilnością, brak aktualizacji, supportu i bieżących danych też może doprowadzić do tego, że takie oprogramowanie stanie się bezużyteczne. Twoja argumentacja jest słaba.
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Jeju, jeju - przecież istnieją takie aplikacje jak https://wfirma.pl czy kurczę nawet https://www.paypal.com/pl/home dostępne jedynie jako SaaS i nikt nie narzeka, firmy z tego korzystają, osoby prywatne również :P


edytowany 3x, ostatnio: Patryk27
Bartosz Wójcik
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 4 lata
  • Postów:439
1

O à propos tego, że pada firma. Pamiętacie zmianę VATu? Wiele firm nie wiedziało co robić, bo korzystali ze starych aplikacji księgowych, czasami jeszcze DOSowych, a producent już nie istniał. I co się działo? Ano dwie rzeczy. Migracja na inne oprogramowanie lub szukanie kogoś, kto zmodyfikuje takie stare oprogramowanie. Migracja wydaje się najrozsądniejszym rozwiązaniem ze względu na przyszłe aktualizacje i nie ma w tym chyba nic aż tak złego skoro do tego zmusza sytuacja.

0
Bartosz Wójcik napisał(a):

Migracja wydaje się najrozsądniejszym rozwiązaniem ze względu na przyszłe aktualizacje i nie ma w tym chyba nic aż tak złego skoro do tego zmusza sytuacja.

a co jeśli migracja jest niemożliwa bo dane w bazie są bezużyteczne bez przetworzenia przez serwer który już nie istnieje?

Bartosz Wójcik
Wtedy musisz zadzwonić po Drużynę A :)
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)