[ glamoc @ 12.09.2009. 17:39 ] @
Napravio sam klijent server aplikaciju u javi i sad imam problem sto trebam da obezbedim da server bude otporan na napade.
Server je organizovan na sledeci nacin:ima jednu nit koja na serverskom portu(ServerSocket) osluskuje zahteve klijenata i imam pool niti koje
odradjuju neku poslovnu logiku.Postoji mogucnost da se neko preko recimo telneta nakaci na moj server na port X i da salje gluposti,i to sam sredio da server zatvori port koji je napadac dobio,ali ukoliko se neko samo nakaci na servera bez ikakvih poruka jedna nit ostaje trajno blokirana cekajuci da taj ko se nakacio posalje nesto.Da li je moguce u javi podesiti da citanje iz socketa ne bude blokirajuce vec da bude blokirajuce neko vreme a onda da se rasine veza.
[ grizzly @ 12.09.2009. 18:45 ] @
Mozda da napravis nit koja ceka neko vreme i onda proveri da li se ista desava tu, a ako ne zatvori soket?
[ glamoc @ 12.09.2009. 18:58 ] @
To sam i ja konto al mozda ima nesto vec predvidjeno za ovakve situacije
[ hyle @ 12.09.2009. 19:20 ] @
Ako želiš da ti rad sa socketima ne bude blokirajući onda moraš koristiti Java NIO (New I/O ili Non-blocking I/O) umesto standardnih socketa. Potraži po netu tutorial, moraš malo da uđeš "ispod haube" da bi lepo skontao kako se programira. NIO ti daje veću skalabilnost ali ne postoji neka sigurna zaštita od DOS napada.

Ako te NIO ne bude zadovoljio možeš koristiti i projekat koji se zove kao naš sagovornik grizzly
U pitanju je nadgradnja na NIO, a evo i linka na Project Grizzly
[ Milos Sreckovic @ 16.09.2009. 08:41 ] @
imas na socket-u funkciju
setSoTimeout(int timeout)
sa kojom mozes da namestis vreme posle koje ce ti se baciti izuzetak ako se nista ne desava...