Poznamky v textu: Ivan 596 wrote: > Ranko, > > mohol by sa prosim nejaky bezpecnostny specialista podelit o kroky > PROGRAMATORA pre bezpecnu java web aplikacie? > > Uvediem svoje (aplikacia je klasicky java-web, jsp, servlet, EE ziadne, > mozno neskor, Struts): > > 0. Prihlasovanie odosielane cez POST-metodu :-)
Vsechny odesilani formularu by mely jit pres POST metodu, ne jen prihlasovani.
A po POSTu je dobre delat redirect.
> 1. SSL sifrovana komunikacia (to ale asi nie je programtorova starost...)
Castecne je, nesmi se stat, pokud je stejna aplikace pristupna pres
SSL i pres ne-SSL HTTP, aby cookies nastavene pres SSL
byly zasilany i behem ne-SSL spojeni. Takze si programator
musi kontrolovat prepinani mezi SSL a ne-SSL rezimem.
> 2. Osetrenie formularovych vstupov
> - pre SQL (ak mam v programe kazdy parameter osetreny
> apostrofmi:String dotaz = "SELECT * FROM nieco WHERE id='" + id "',
> staci vlastne len nepovolit vo formularovom vstupe jediny znak: apostrof?)
> - treba pre nieco ine osetrovat formularove vstupy, ktore sluzia
> len databaze?
O PreparedStatement a set* metodach uz psali jini, nebu to opakovat.
> 3. Kazda stranka (okrem prihlasovacej) na zaciatku testuje ci existuje
> session s id uzivatela, teda iba uz prihlaseny mozu pristupovat
Je zbytecne duplikovat kod a mit to v kazde strance na zacatku,
mnohem lepsi je udelat si na to Filter mapovany na vsechny stranky
(a pro prihlasovaci v nem mit vyjimku).
> 4. Testovanie vsade, kde sa neocakvaju GET parametre, ci je metoda POST
> 5. Osetrovanie parametrov, napr. ak ocakavam jediny, nieco ako if (
> (request.getParameterMap().size!=1) spolu s testovanim presneho mena a
> hodnoty
Jak uz psal Filip Jirsak, Java neni skriptovaci jazyk, a proti nekterym
typum utoku je z principu odolna.
>
> oplati sa este nieco??
Jiste, napriklad pokud se vypisuji do stranky data zadana uzivatelem,
vzdycky je treba je prohnat pres neco, co osetri specialni znaky,
napriklad JSTL tag
<c:out value="${data}"/>
protoze jinak muze zly uzivatel napsat do dat kus JavaScriptu
a delat Cross-Site Scripting utoky.
Pokud uzivatel muze uploadovat soubory, je dobre jim nastavit horni
limit velikosti, aby nemohl poslat 100TB soubor a tak udelat
Denial-of-Service utok.
A hlavne pri kazdem pristupu k datum si kontrolovat, zda na to
ma uzivatel opravneni, protoze zly uzivatel si muze rucne
vytvaret URL tak, aby volal zpracovani formularu, aniz
by se k formularum musel dostat.
Makub
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Science email: [EMAIL PROTECTED]
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--------------------------------------------------------------
smime.p7s
Description: S/MIME Cryptographic Signature
