Come rendere il mio server Java di base sicuro contro gli hacker? [chiuso]

2

Ho un programma Java Server di base sul mio iMac scritto interamente in Java, che funziona per un programma di disegno client Java.

Il programma consente in pratica all'utente di disegnare qualcosa su JPanel con il disegno che viene copiato sui pannelli di tutti i client connessi.

Il server funziona su un indirizzo ip statico, su più porte opzionali e prevede l'uso di database e il filesystem di iMac.

Il problema: Ricevo richieste casuali di connessione da strani indirizzi IP sempre e sono molto diffidente riguardo

Dai un'occhiata al mio codice server di esempio:

link

Domande) 1) Gli hacker possono compromettere il mio iMac a causa del mio ingenuo programma server? In tal caso, cosa devo modificare nel mio codice per impedirlo?

2) Quali meccanismi nel mio codice sono i collegamenti deboli?

3) È possibile per un hacker accedere al mio iMac solo conoscendo l'ip statico?

Grazie

    
posta Swapnil B 22.11.2017 - 12:11
fonte

1 risposta

3

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.

    
risposta data 22.11.2017 - 12:36
fonte

Leggi altre domande sui tag