L'odio di essere portatore di cattive notizie, ma se hai eseguito programmi come questo sul tuo computer personale e lo hai reso accessibile al mondo esterno, devi realisticamente presumere che tu abbia avuto dei dati rubato e / o la tua macchina è stata compromessa.
1) Can hackers compromise my iMac because of my naive server program? If so, what should I modify in my code to prevent it?
Se stai scrivendo qualsiasi come questo, devi supporre che la risposta sia sì. C'è una ragione per cui molti, me compreso, dicono di non tirare mai il tuo sicurezza: gli strumenti standard del settore, gli algoritmi e i framework sono stati generalmente testati e consolidati nell'uso nel mondo reale per un certo numero di anni, e anche hanno hanno difetti di sicurezza (a volte critici) che vengono rivelati di volta in volta.
Anche se si utilizza una soluzione standard così consolidata, non avrei mai eseguito qualcosa di simile su una macchina personale a meno che non fosse dietro qualche altro livello di protezione (come una VM).
2) What mechanisms in my code are the weak links?
Questo è l'approccio sbagliato - potrei forse dirti una dozzina di buchi enormi se vedessi il codice nella sua interezza, e potrebbero essercene ancora centinaia in più. Ciò non lo renderebbe sicuro, e non dovresti pensare che lo sia. È inoltre necessario considerare la sicurezza della piattaforma su cui si sta eseguendo (tutto, dalla Java VM fino al sistema operativo), quindi è possibile scrivere un'applicazione completamente a tenuta stagna e ancora essere vulnerabili.
In ogni caso, anche ignorando tutto quanto sopra. Non potrei dire. Non hai fornito il codice (anche nella domanda StackOverflow, il codice chiaramente non è un esempio completo e autonomo - mancano le chiamate / gli oggetti del metodo.)
Tuttavia, solo per il gusto di giocare insieme a quello che hai postato, non controlli mai realmente se sei loggato prima di fare:
DrawData dat=(DrawData)acceptUserData();//this reads objects
//from the socket inputstream
dat=processData(dat);
sendToAllClients(dat);
... che puzza davvero di qualcosa che non mi sembra giusto.
3) Is it possible for a hacker to access my iMac just by knowing the static ip?
Se questo programma è in esecuzione su di esso, e hai bucato un buco nel firewall? Certo, direi che devi presumere che le persone possano e abbiano avuto accesso alla tua macchina. Se hai password, dati sensibili o qualcos'altro di simile, dovresti essere pronto a cambiarli tutti immediatamente.
In futuro, se veramente vorrà sperimentare con i programmi (probabili) insicuri che hai appena scritto, allora almeno gira su una VM economica ed eseguila su quella invece - che se viene compromesso, non c'è molto da perdere.