OZ 2004/2

82 ORGANIZACIJA ZNANJA 2004, LETN. 9, ZV. 2 POROČILO Izgradnja varnih spletnih aplikacij Varnost moramo upoštevati že v fazi načrtovanja. Razde- ljena je v naslednje sklope: • avtentikacija – prijava, • avtorizacija – do česa lahko uporabnik dostopa, • zaupnost, zasebnost – kdo vse lahko za postorjeno delo izve, • integriteta – kdo lahko še spreminja, • revizijska sled – možnost spremljanja zgodovine, • dostopnost – katere akcije lahko uporabnik izvaja. Največ vdorov je preko vnosnih obrazcev. Zato je osnov- no načelo varnosti “ne zaupaj vhodnim podatkom”. V nadaljevanju je podanih nekaj primerov vdorov. 1. Če vnosni obrazci dovolijo vpisovanje sintakse HTML, se lahko vpisujejo izrazi HTML in tudi kode javascript ( cross site scripting ). Ob validaciji se ob- vezno uporablja pretvorba vseh nizov pred nadaljnjo uporabo. Pri tem uporabljamo metodi: HttpUtility.HTMLEnode (zamenjava znakov, npr. znak “>” z &gt;”) HttpUtility.URLEncode 2. Če uporabniške nastavitve shranjujemo v piškotke ( cookie ), ga lahko koda javascript naloži v spletno po- vezavo in jo tudi izvede. Iz spletnega naslova se nato včita trenutno aktualna seja, s katero se vdre v spletno aplikacijo. Zelo preprosto preverjanje bi lahko opozo- rilo na napako v primeru najdenega niza “javascript”. Vendar to ni dovolj. Primeri nevarnih spletnih naslo- vov: <img src=javascript:code> <link rel=stylesheet href=“javasc- ript:code”> <input type=image src=javascript: code> <a href=“javas&#99;rip&#35;:code> <p style=left:expression(code)> &{code}; <style type=“text/javascript”>code</ style> 3. V primeru tvorjenja stavkov SQL je potrebno upo- rabljati parametrizirane poizvedbe. V nasprotnem primeru lahko poljubno razširimo del poizvedbe z “where” in npr. dodamo “OR 1=1” in s tem izpolni- mo pogoj. 4. Pri gradnji spletnih servisov je potrebno pozornost nameniti spletnim metodam, ki vračajo neki rezultat. Priporočljivo je, da se uporabi vhodni parameter “out” in da metoda ne vrača ničesar. Na ta način se prepreči, da bi spletno metodo klicali v zanki. Primer metode in njenega klica: void DOarraything(out Mdevice[] de- varray) { devarray=new Mdevice[2]; devarray[0]=new Mdevice(); devarray[1]=new Mdevice(); devarray[0].devno=1; devarray[1].devNo=2; } Mdevice[] devarray; // uninitialised DOarraything(out devarray); Povezljivost programske opreme, napisane v javi in tehnologiji MS Windows ob uporabi Web Services Na predavanju nam je bilo predstavljeno, kako so v pre- teklosti povezovali različne aplikacije. Ob upoštevanju specifikacij TCP-IP so morali sami narediti povezavo na nivoju transportnega sloja in tako povezati obstoječe sisteme. Sedanja tehnologija omogoča povezovanje na višjem nivoju (nivoju aplikacije namesto transportnega sloja). Odločili so se za tehnologijo WebServices, ki jim je omo- gočila izdelavo aplikacije, v skladu z uporabniškimi za- htevami in uporabo standardiziranih rešitev. MS Visual C# in MS Visual J# za programerje v javi Znano je, da so razvijalci, ki poznajo okolje java, zaradi podobnosti tehnologij najbolj usposobljeni za prehod na ogrodje .NET. Alternativa javi v ogrodju .NET je J#, če- prav je v tem ogrodju prvi razvojni jezik C#. Na Microsoftovih spletnih straneh lahko najdemo brez- plačno orodje za pretvorbo jave v C#, JLCA (Java Lan- guage Conversion Assistant), ki deluje za javo, verzija 1.1.4. Na praktičnih primerih je bila prikazana uporabnost tega orodja. Orodje je bilo učinkovito le v najenostavnej- ših primerih, sicer pa so potrebni ročni popravki. Za večje projekte pa je praktično neuporabno. Java programerji zaenkrat nimajo tehtnih razlogov za prehod na .NET. Če pa je to nujno potrebno, je najbolje preiti na C#, ker se bo J# v ogrodju .NET dolgoročno verjetno počasneje razvijal. Orodja za prenos projektov java na .NET so zaenkrat neučinkovita. Najboljša rešitev je integracija aplikacij java J2EE in .NET preko spletnih storitev.

RkJQdWJsaXNoZXIy MTAxMzI5