E-banking: Defective by design

Autori: Dušan Dželebdžić i Žarko Ptiček

Sadržaj:

Uvod

Razumemo i poštujemo potrebu za razvojem, a naročito za primenom tehnologija koje ljudima (pa i klijentima banaka) olakšavaju ili pojednostavljuju život (pa i korišćenje bankarskih usluga). Ono što autori ovog teksta ne razumeju je da se pružaoci bankarskih usluga često ne libe da, zarad sopstvene komocije, ili usled sopstvenog neznanja, od korisnika svojih usluga zahtevaju da naruše ličnu bezbednost i bezbednost sopstvenog računara, kao i bezbednost svojih podataka. Nepoštovanje civilizacijskog nivoa bezbednosnih standarda i zakonskih i podzakonskih propisa, prema mišljenju autora treba da bude jasan znak da u interesu bezbednosti sopstvenog računara ne bi trebalo koristiti usluge banke.

Odmah na početku autori napominju da su ovaj tekst sastavili na osnovu ličnih opažanja, ličnog iskustva, i iznose samo one činjenice za koje odgovaraju pod krivičnom, materijalnom i moralnom odgovornošću. Ovaj tekst nije istraživanje, jer ličnim opažanjem i iskustvom autora nisu obuhvaćene sve banke koje posluju u Republici Srbiji, čiji spisak možete naći na zvaničnoj prezentaciji Narodne Banke Srbije.

Skrećemo pažnju da je gospodin Luka Gerzić objavio članak u kojem je u okviru istraživanja bezbednosti .rs domena posebnu pažnju obratio na bezbednost banaka. Članak možete pročitati ovde: http://blog.gerzic.rs/how-secure-is-rs

Ništa u ovom tekstu nije, niti može biti tumačeno kao plaćena ili neplaćena reklama, anti-reklama ili slično. Cilj teksta je podizanje svesti kako o realnim bezbednosnim pretnjama po korisnike, tako i pravnim obavezama samih banaka.

Koje su obaveze banaka prema važećim propisima?

Pre nego što navedemo koje su konkretne bezbednosne situacije sa kojima se korisnici bankarskih usluga mogu susresti, red je da ukažemo na postojanje pravnog okvira za bezbednosno postupanje banaka. Zakonom o bankama („Sl. glasnik RS“, br. 107/2005, 91/2010 i 14/2015), koji se smatra “krovnim” propisom kojim se uređuje poslovanje banaka u Srbiji, bezbednost se pominje samo na jednom mestu. Naime banka je dužna da ovlašćenim licima Narodne banke Srbije omogući da kontrolu njenog poslovanja izvrše u sedištu banke i u svim njenim organizacionim delovima, a ta ovlašćena lica u vršenju kontrole mogu da pristupaju svim organizacionim delovima i prostorijama banke, uz poštovanje bezbednosnih procedura banke koju kontrolišu. Članom 76. stav 3. tačka 8) ovog zakona, propisano je da je obezbeđivanje sigurnosti i redovnog praćenja sistema informacione tehnologije i trezorskog poslovanja banke spada u nadležnost izvršnog odbora. Dakle “krovni” zakon ne tretira oblast bezbednosti korisnika, već propisuje da prilikom kontrole, ovlašćena lica moraju poštovati bezbednosne procedure same banke, a sigurnost sistema informacionih tehnologija same banke je u delokrugu rada izvršnog odbora.

U Republici Srbiji je dana 5. decembra 2011. godine počeo sa primenom Zakon o zaštiti korisnika finansijskih usluga („Sl. glasnik RS“, br. 36/2011 i 139/2014), koji kao osnovna načela zaštite korisnika propisuje i pravo na informisanje i pravo na zaštitu prava i interesa. Prema ovom zakonu korisnik ima pravo da od banke, u pisanoj formi ili na drugom trajnom nosaču podataka, bez naknade dobije informacije, podatke i instrukcije koji su u vezi s njegovim ugovornim odnosom s bankom, na način i u rokovima utvrđenim ugovorom koji ima sa bankom. U konkretnom slučaju, korisnik ima pravo da od banke zahteva spisak bezbednosnih mera (ili propusta) koje bi bio u obavezi da primeni (ili trpi) zarad ostvarivanja prava iz ugovora koji ima sa bankom, uključujući i e-banking i m-banking usluge. Kako zakon korisnika definiše i kao fizičko lice koje namerava da koristi finansijske usluge, to je banka u obavezi da vam dostavi ove informacije i pre stupanja u ugovorni odnos, odnosno u predugovornoj fazi, na osnovu člana 17. ovog zakona.

Ipak, iako ni Zakon o bankama ni Zakon o zaštiti korisnika finansijskih usluga eksplicitno ne pominju informacionu bezbednost korisnika, ona je propisana Odlukom o minimalnim standardima upravljanja informacionim sistemom finansijske institucije („Sl. glasnik RS“, br. 23/2013 i 113/2013), koja se za banke primenjuje od 1. januara 2014. godine. Ovom Odlukom kao korisnici informacionog sistema definisana su sva lica koja su ovlašćena da koriste informacioni sistem uključujući i klijente banke koji informacionom sistemu finansijske institucije pristupaju preko elektronskih interaktivnih komunikacionih kanala. Takođe, banke su obavezane da uspostave, nadziru, redovno revidiraju i unapređuju proces upravljanja informacionim sistemom radi očuvanja bezbednosti i funkcionalnosti tog sistema, kao i da unutrašnjim opštim aktom, u skladu sa zakonom, utvrde ovlašćenja i odgovornosti svojih organa upravljanja i nadzora koji se odnose na ove poslove (tačka 4. Odluke). Banka je dužna da obezbedi primenu svih unutrašnjih opštih akata i procedura u vezi sa informacionim sistemom, kao i da obezbedi da svi korisnici ovog sistema budu upoznati sa sadržajem tih akata i procedura, u skladu s njihovim ovlašćenjima, odgovornostima i potrebama1 (tačka 7. Odluke).

Iz svega navedenog, nedvosmisleno proizlazi da je obaveza banke da svakog korisnika svojih usluga ili potencijalnog klijenta besplatno i celovito informiše o informacionoj bezbednosti koju primenjuje.

Osim navedenog, Odlukom su propisane obaveze banke u pogledu elektronskog bankarstva, i to (tačke 49.-51. Odluke):

  • da uspostavi proces upravljanja rizicima koji proizlaze iz elektronskog bankarstva;
  • da u poslovima elektronskog bankarstva primeni sigurne i efikasne metode za proveru i potvrdu identiteta i ovlašćenja lica, procesa i sistema;
  • da pri izvršavanju platnih transakcija u okviru elektronskog bankarstva, obezbedi da autentifikacija korisnika tog bankarstva uključi kombinaciju najmanje dva elementa za potvrđivanje korisničkog identiteta;
  • da obezbedi odgovarajuću potvrdu svog identiteta na distributivnom kanalu elektronskog bankarstva kako bi korisnici tog bankarstva mogli da provere autentičnost banke;
  • da obezbedi postojanje odgovarajućih operativnih i sistemskih zapisa kako bi se u odgovarajućoj meri obezbedila neporecivost i dokazivost radnji u vezi sa elektronskim bankarstvom.

Šta je od navedenog ispunjeno, a šta nije, kontroliše Centar za superviziju informacionih sistema pri NBS.

Šta pojedine banke od klijenata zahtevaju u pogledu bezbednosti i koje su posledice?

E-banking u Srbiji se ne može nazvati novinom, zato što postoji još od kraja devedesetih godina. Najveći razvoj u ovoj oblasti je bio početkom ovoga veka, ali u nekoliko slučajeva deluje kao da se razvoj u to vreme i zaustavio.

Neke od banaka su kreirale sopstveni softver, dok su druge taj posao poveravale firmama kojima je izrada softvera primarna delatnost2.  Uglavnom su birane Web aplikacije kojima se pristupa preko browsera (poput Internet Explorera, Firefoxa ili Chromea, ali i mobilnih telefona).

Eurobank

U suštini ova ideja je dobra – svaki računar ima instaliran najmanje jedan browser, tako da je dovoljno podržati najpopularnije browsere i nestaju tehničke prepreke da bilo ko pristupi aplikaciji. Drugo rešenje bi bilo razvoj prilagođenih aplikacija za svaku platformu (Windows, OSX, Linux, iOS, Android, Windows Phone). Ovo rešenje je odlično na duge staze, ali poskupljuje izradu i održavanje aplikacija, pošto se umesto jedne održava najmanje šest aplikacija.

Bez obzira na to koje se rešenje odabere sa klijentske strane, e-banking aplikacija mora da sa druge strane “razgovara” i sa računarskim sistemom banke. Taj deo se rešava tako što se definiše veoma restriktivan protokol komunikacije, a zatim se sastavi aplikacija u nekom od jezika koji su za to predviđeni. Dobar protokol komunikacije može biti takav da je potpuno svejedno šta se nalazi sa klijentske strane, bila to Web, mobilna ili desktop aplikacija.

O kakvoj god aplikaciji da se radi, dobre prakse nalažu da one moraju da se izvršavaju na platformama za koje su pisane. Kod desktop aplikacija se zbog njihove prirode očekuje da u paketu sa sobom donesu i još neke komponente koje su im potrebne za rad, ali kod Web aplikacija to je sasvim neprihvatljivo. Uzmite za primer Facebook, Twitter ili bilo koju Google uslugu – radi se o izuzetno kompleksnim Web aplikacijama kojima se može pristupiti sa bilo kog računara, bez potrebe za bilo kakvim prilagođavanjem tog računara.

Jedna veoma često upotrebljavana prečica za izradu softvera koji se izvršava na svim uređajima je Java. Ovaj sistem omogućuje da se napiše jedan kôd koji će se izvršavati na svim platformama, tako što u klijentskom računaru startuje virtuelnu mašinu (tj. računar unutar računara) koja je svuda ista. Programeri više ne moraju da prate izmene na svim računarskim platformama. Dovoljno je da isprate objave proizvođača virtuelne mašine, testiraju svoju aplikaciju na novoj verziji VM pre njenog zvaničnog objavljivanja i pripreme se na vreme pre nego što nova verzija virtuelne mašine bude puštena u javnost.

Pošto virtuelna mašina dozvoljava izvršavanje proizvoljnog koda na računaru, veoma je bitno da je ona uvek ažurna i da su njeni bezbednosni sistemi funkcionalni. U suprotnom bi bilo koji sajt mogao da izvrši bilo koje aktivnosti na vašim računarima –  ukrade ili obriše podatke, ili koristi vaše računare da kroz njih vrši krivična dela poput piraterije3 ili računarske sabotaže.

“Uputstvo za nesmetan rad aplikacije”

Kao što smo upravo razjasnili, svrha bezbednosnih podsistema nije da ometaju rad e-banking aplikacija, nego da spreče hakerske napade na računare klijenata banaka.

Aplikacija koju blokiraju bezbednosni podsistemi je loše napisana aplikacija i postoji dobar razlog zašto je blokirana. Rešenje nije deaktiviranje bezbednosti, nego izrada aplikacije prema važećim standardima platforme za koju su se programeri opredelili.

soge

Uputstva koja banke dostavljaju pod naslovom “Uputstvo za nesmetan rad aplikacije” obično sadrže instrukcije za instaliranje zastarelih komponenti i deaktiviranje bezbednosnih sistema. Bar jedna banka, kao i Poreska uprava RS savetuju aktiviranje NPAPI dodatka u Chrome browseru, komponente koju sam Chrome definiše kao veoma veliki čekić koji treba koristiti tek kada ništa drugo ne pomaže” i koja je markirana kao zastarela (eng. deprecated) pre dve godine, a nedavno je i deaktivirana.

“Molimo nemojte da ažurirate Javu”

Aplikacije koje se izvršavaju u Java VM komuniciraju sa klijentskim računarom preko standardizovanih funkcija. Prilikom ažuriranja Java okruženja, postojeće funkcije se najčešće ne diraju već se samo dodaju nove. Međutim, nekada postoji potreba da se postojeća funkcija izmeni, ili potpuno ukine zato što je zamenjena drugom. Ove izmene se najavljuju nekoliko meseci unapred, zatim se stare funkcije markiraju kao zastarele, a potom se nakon najmanje 6-12 meseci zaista i izbacuju. Programeri koji održavaju aplikaciju su dužni da prate izmene i na vreme pripremaju svoje aplikacije za nove verzije VM – zbog toga i naplaćuju redovno održavanje aplikacije.

Programer čiji program nakon ažuriranja sistema prestane da radi, a rešenje za to nađe u zabrani ažuriranja sistema se ne može nazvati dobrim programerom. Zamislite advokata koji zastupa klijente isključivo po zakonima koji su važili 4. maja 1982. godine i negira postojanje novih propisa – nema velike razlike. Kao i advokati, i banke su dužne da prate i primenjuju važeće propise u oblasti bezbednosti4.

Jedan ekstreman primer loše prakse u ovoj oblasti je banka Société Générale

soge-win-java

Banka je svojim klijentima poslala cirkularno pismo sa obaveštenjem:

  1. Da Windows nije kompatibilan sa Javom
  2. Da se ukloni ažurna verzija Jave
  3. Da se instalira zastarela, “ispravna” verzija Jave.

Krenimo redom:

  1. Windows i Java jesu kompatibilni. To je zapravo svrha Jave – da se izvršava na računaru. Krajnje je neozbiljno tvrditi da najrasprostranjenija virtuelna mašina ne radi na najrasprostranjenijem operativnom sistemu, kao i da to niko u svetu nije zapazio osim jedne banke u Srbiji.
  2. Uklanjanje ažurne verzije Jave i zamena starom, nebezbednom verzijom bi se u širem tumačenju moglo smatrati računarskom sabotažom.
  3. Ažurna verzija Jave je proglašena neispravnom, a zastarela se naziva “ispravna”.

Raiffeisen banka je do nedavno zahtevala od svojih korisnika da ne ažuriraju Javu. Sada je obaveštenje promenjeno u sledeće:

raiffeisen

Dakle, pored zahteva za brisanjem sigurnosne komponente u računaru klijenata, korisnici koji imaju određeni tip čitača konačno smeju da ažuriraju svoju Javu. Ostali i dalje ne smeju.

Nije problem samo u bankama. Portal E-Porezi od korisnika zahteva da pribave sertifikat izdat od strane ovlašćenog izdavača:

e-porezi-klijent

Sa druge strane, oni koriste sertifikat koji su sami potpisali, te zbog toga korisnici dobijaju bezbednosna upozorenja svojih browsera:

e-porezi-ffe-porezi-chrome

Poreska uprava takođe zahteva aktiviranje NPAPI dodatka, veoma velikog čekića koga smo u ovom članku već pomenuli.

Stiče se utisak da autori softvera svoju neažurnost pravdaju greškama u Javi i greškama u operativnom sistemu.

 

Dopuna 1: Kako je operativni sistem za iPhone mobilne telefone dobio svoju nadogradnju na verziju iOS 9.2 tako je stiglo i sledeće obaveštenje od Raiffeisen Banke A.D. koje glasi:

Raiffeisen obaveštenje

Raiffeisen obaveštenje

Koje su posledice?

Ne postoji objektivna prepreka da se e-banking rešenja upodobe pozitivnopravnim propisima i dobroj praksi izrade aplikacija. Erste Banka i UniCredit Banka su prema iskustvu autora članka banke koje poštuju propisane bezbednosne procedure i propisima zagarantovana prava korisnika.

Upodobljeni zahtevima banaka, računari klijenata su zamrznuti na starim verzijama sistemskog softvera, zahvaljujući tome su podložni raznim vrstama napada.

Korisnici se uče da ignorišu HTTPS upozorenja, što je loša praksa koju mogu da prenesu i na druge servise.

Od lica koja nisu stručna za administraciju računarskih sistema se zahteva da menjaju sistemske datoteke i deaktiviraju sigurnosne komponente, baš one komponente koje bi trebalo da ih štite od napada.

Savesni korisnici koji redovno ažuriraju sistemski softver su diskriminisani i ne mogu da koriste usluge nekih banaka i Poreske Uprave. U slučaju banaka ovo i nije veliki problem, korisnik uvek može da odabere drugu banku. Drugu Poresku Upravu, u trenutku pisanja ovog članka, nemamo.

Korisni linkovi

Fusnote

  1. Ovlašćenje korisnika bankarske usluge u smislu prava na informisanje iz člana 5. Zakona o zaštiti korisnika finansijskih usluga
  2. Ova mogućnost je danas eskplicitno propisana Odlukom o minimalnim standardima upravljanja informacionim sistemom finansijske institucije
  3. Neovlašćeno iskorišćavanje autorskog dela ili predmeta srodnog prava, član 199 Krivičnog Zakonika („Sl. glasnik RS“, br. 85/2005, 88/2005 – ispr., 107/2005 – ispr., 72/2009, 111/2009, 121/2012, 104/2013 i 108/2014)
  4. Tačka 16. stav 2. Odluke o minimalnim standardima upravljanja informacionim sistemom finansijske institucije

10 komentara Napišite komentar

  1. Odličan tekst i 100% realan! Kao servisee računara, svakodnevno se susrećem da gore opisanim situacijama.

    Banke ne bi smele da uslovljavaju svoje klijente određenim verzijama softvera i operativnim sistemima za „nesmetani rad“ aplikacija. To je ništa drugo do nesposobnost programera da posao obavljaju onako kako bi to trebali da rade.

    Pojedine strane banke su odustale od korišćenja Jave zbog mnogobrojnih sigurnosnih propusta iz prošlosti, a sve u cilju da ne ugroze bezbednost svojih korisnika.

    Sve pohvale na uloženi trud za pisanje ovog teksta!

  2. Stvarno odličan tekst. Ja takođe održavam računare svojim klijentima i pored ovoga što su Žarko, Dušan i Nenad napisali, hteo bih da dodam je situacija još gora. Pojedine banke (Intesa, Raiffeisen…) povremeno za „neometani rad“ zahtevaju i da se antivirus isključi na mesec-dva dok ne reše problem. Kad menjaju domen,tj, adresu svojih servera, koriste SSL certifikate starog domena, pa browseri izbacuju greške pa je i u takvim situacijama potrebno „olabaviti“ podešavanja browsera. A nisu samo banke i e-Porezi problem, nego i obavezno socijalno osiguranje (https://portal.croso.gov.rs) koje takodje imamo samo jedno.

    A ako iz nekog razloga njihovo uputstvo za „neometani rad“ ipak ne reši problem, korisnici su osuđeni da sami rešavaju problem, jer od banke, Poreske uprave i CROSO pomoć dobiti nećete. Ili se ne javljaju na telefon, ili ne znaju ili Vas šetaju od jednog do drugog u krug.

  3. Ja sam se sa ovim sreo ali kod državne ustanove, koja je insistirla da deinstaliram najnoviju verziju Jave i instaliram stariju da bih mogao da koristim elektronski potpis.

    Novija verzija je bila instalriana kao ispravka sigurnosnih problema u starijoj verziji.

  4. Odličan tekst. I upravo je sve navedeno u tekstu uticalo da promenim intesu i predjem u erste. Prilikom otvaranja računa u erste zamolio sam službenicu da zabeleži da kod njih prelazim isključivo zbog načina na koji im radi e-banking.

  5. Moje iskustvo sa Intesom je relativno OK. Redovno update-uju Javu, ali „zaboravljaju“ da o tome obaveste korisnike, tako da se setim da pogledam da li imam najnoviju verziju kada ne mogu da izvrsim uplatu.
    Sa druge strane, nije samo problem sa e-Bankingom. Dotakli ste se ovde i ePoreza, vrlo interesantne teme vezane za G2C. Slican problem sam primetio i na portalu e-Uprave, kada su od mene trazili sertifikat da pristupim (kao gradjanin) pojedinim sadrzajima na portalu, dok sam tim istim sadrzajima uspeo pristupiti na sajtu lokalne uprave bez ikakvih „bezbednosnih procedura“, bukvalno zaobilazeci portal E-Uprave.

  6. Domaći softveri su aljkavi, imaju previše bubica (npr. ePorezi rade samo sa prvim čitačem, ako korisnik reinstalira drajvere, ili zameni čitač, potrebno je igrati se po Device Manageru pre nego što sve ponovo proradi).

    Midlveri koje isporučuju izdavaoci sertifikata ne sarađuju međusobno kako treba (konfigurisani su da se registruju kako odgovaraju na sve moguće, a ne samo na one kartice sa kojima zapravo rade).

    Code signing se uglavnom koristi bez Timestampa pa apleti prestanu da rade kada sertifikat istekne, a SSL sertifikati za HTTPS često ne odgovaraju domenu ili nisu od strane priznatih izdavaoca koje korisnici već imaju odobrene.

    U rešenjima eUprave zaboravlja se na stavku „održavanje“ pa tako aplet za čitanje lične karte za uslugu zamene saobraćajne dozvole i dalje ne radi sa novim karticama koje se izdaju još od avgusta prošle godine.

  7. Za tri godine korišćenja RF ROL rešenja, privatnog i poslovnog, ni jednom nisam video da traže da se Java NE ažurira, šta više, isticali su obaveštenje o novoj verziji par dana pre objavljivanja i sa starom verzijom, nije im radio ROL. Savet koji sad ističu meni nije bio potreban na tri različita kompjutera, sa tri različita OSa i 5-6 verzija pretraživača. Lepo što su naveli da se MOŽE desiti i ponudili rešenje. Privatno znam da se na njihovom ROL i mbank rešenju radi u kontinuitetu, s naglaskom na bezbednost na adekvatnom nivou.

  8. Ajde da malo iskritikujem tekst pošto ne oslikava pravu situaciju. Izjava „Jedna veoma često upotrebljavana prečica za izradu softvera koji se izvršava na svim uređajima je Java“ nije tačna. Jedini razlog zašto se Java koristi je zakonska regulativa (iz domena corporate banking-a i digitalnog potpisa) i Java je jedina tehnologija koja omogućava da se sa web strane pošalju podaci na fizički uredjaj (smart karticu) gde se radi potpisivanje. Svi primeri u ovom članku koji „napadaju“ javu su corporate banking i moraju da koriste digitalno potpisivanje kao najsigurniji način i jedini način za ostvarivanje principa neporicivosti koja jedina ima težinu na sudu (zamislite da bez tog principa platite nekoliko stotina hiljada dinara veliku fakturu i da zbog toga kasnije imate kamatu i šta već, kako bi ste dokazali na sudu da ste zapravo platili?). One banke koje ne koriste digitalne potpise zapravo idu svesno na mogućnost da ih korisnici sutra tuže, i verovatno dobiju spor, zarad jednostavnosti. Ali kada se neko na mleko opeče i u jogurt će posle duvati. 🙂
    Sa druge strane „čekić NPAPI“ koji se pominje je netačan – NPAPI je od strane Chrome developera označen kao nešto što se ne koristi tako često i zbog pojednostavljenja koda, poboljšane bezbednosti (NPAPI omogućava da bilo koja strana pozove NPAPI plugin), brzine ukine njegovo korišćenje (http://venturebeat.com/2014/11/24/google-chrome-will-block-all-netscape-plugin-api-plugins-in-january-drop-support-completely-in-september/) . I to je jedini razlog zašto stoje navedena obaveštenja za njegovo korišćenje u Chrome browser-u. Drugi browser-i rade bez ikakvog podešavanja.
    Pošto se ovde spominju direktive NBS, a kako sam došao do ovog članka preko Twitter-a i praćenja Telenor banke, čudi me da ovde ne vidim ni jedno zapažanje vezano za obavezu mobile i web rešenja za do-autentifikaciju sa OTP verifikacijom na svakom nalogu (Telenor banka npr. svesno krši ovu odredbu u slučaju da plaćate račun koji ste nekada već plaćali).
    I još jedan komentar na to zašto banke nekada napišu da korisnici ne update-uju javu. Oracle je poznat po tome da godišnje uradi rollout 4 nova patch-a koji nisu baš dobro istestirani. Korisnici ne moraju da urade upgrade (do time-bombe koja je ukodirana u Java runtime VM kada se koristi Applet tehnologija). To vreme banke koriste, pošto Oracle ne daje ranu verziju jave niti garantuje da će ono što je i omogućeno developerima sutra i biti na produkciji, da istestiraju novu verziju i da pošto se uvere da je korektno to obaveste svoje korisnike. Takođe, Oracle Java, nije bez bugova i nekompatibilnost 64 bitne verzije jave, sa drajverima je dovodila, npr. do toga da OSX korisnici su mogli da koriste samo Apple Javu a ne Oracle javu.
    Kao što se mnogo puta ispostavlja „djavo je u detaljima“. Svako olako pisanje članka je opasno bez detaljnog istraživanja svih razloga.

    Pozdrav

    • Opasno je ukazivati na bezbednosne propuste koje Banke zahtevaju od klijenata da naprave? Možda.
      Još opasnije je ćutati o tome.
      Cenim trud za pisanje ovolikog teksta, kojim ništa nije realno iskritikovano, osim možda, samog Oracle-a što izbacuje nove verzije Jave i lenjosti korisnika.
      U svakom slučaju, hvala na trudu gospodine Bydesign.

Оставите одговор

Obavezna polja su označena *.


This site uses Akismet to reduce spam. Learn how your comment data is processed.