2009-02-06 17 views
7

Sono uno sviluppatore web molto attento alla sicurezza e che cerca di rendere le mie applicazioni web il più sicure possibile.Hacking your own application

Come mai ho iniziato a scrivere le mie applicazioni Windows in C# e quando viene testare la sicurezza della mia applicazione C#, sono davvero solo un novizio.

Basta chiedersi se qualcuno ha dei buoni tutorial/readme su come hackerare la propria applicazione Windows e scrivere codice sicuro.

+1

Penso che tu intenda ** cracking **, ** hacking ** è quello che fai quando lavori sulla tua applicazione. –

risposta

2

Oltre a tutte le risposte ovvie per evitare buffer overflow, code injection, sessionjackjacking et. al. dovresti trovare qualcun altro per controllare il tuo codice/software perché puoi solo pensare ai modi per hackerare il tuo software che sai come prevenire. Solo perché non riesci a trovare un modo per hackerare il tuo software che non significa che nessun altro possa farlo.

0

Per proteggere l'applicazione del modulo di vincita, aprila e prova a fare tutto ciò che l'utente lambda non dovrebbe fare! Spiegherò:

Se "inserisci yes o no", prova con A-Z, 0-9 perché è quello che fanno alcuni utenti per cercare di trovare tracce di stack che potrebbero essere interessanti. Quindi metti validatori ovunque.

Attenzione alla connessione ai database ma se vieni da web dev dovresti essere più consapevole di me :).

La parte più difficile è fare attenzione alle perdite di memoria o cose del genere, ma è nelle app grandi e grandi o nelle app non ben sviluppate.

2

Questo è qualcosa che è molto difficile per te da fare, e penso che ti stai avvicinando al problema dall'angolo sbagliato. Se stai scrivendo un'applicazione di qualsiasi dimensione, tentare di gestire la sicurezza alla fine, cercando modi specifici per rompere il tuo software, è quasi impossibile.

Questo è per una serie di motivi. Pensi già al tuo software in un certo modo. Pensi a modi specifici di interagire con esso e sai come ottenere il meglio da esso. Non ci pensi in termini di modi per sfruttarlo, e questa è una cosa difficile da fare con il software con cui hai familiarità.

Un altro problema è che l'attività di questo punto è troppo grande per essere gestita. Qualsiasi problema riscontrato potrebbe aprire qualsiasi numero di altri problemi. Un controllo di sicurezza a livello di sistema non è affatto abbastanza dettagliato.

Quello che dovresti fare è pensare alla sicurezza mentre scrivi il software. Impara le migliori pratiche e considera ogni metodo e classe che scrivi da una prospettiva di sicurezza.Questo va di pari passo con i test delle unità, prova a considerare quali input potrebbero rendere questa parte specifica del mio programma interrotta. e poi trattare con loro a quel livello.

Dopo ciò, penso che si tratti di rispondere rapidamente a qualsiasi problema di sicurezza di cui si è consapevoli.

1

Si potrebbe fare molto peggio di leggere il libro Security Engineering di Ross Anderson. La prima edizione è scaricabile in formato PDF ed è una buona lettura. Non ho letto la seconda edizione, ma ho il sospetto che sia meglio e che ci siano più chicche.

Si noti che si tratta di un libro che spiega come creare sicurezza dall'inizio, non come interrompere la sicurezza, ma l'esposizione di vari errori di sicurezza dovrebbe darvi una buona idea su dove iniziare a cercare.

1

Piccole cose che ho trovato attraverso la mia esperienza.

  • Non utilizzare SQL dinamico, quindi è vulnerabile all'iniezione SQL. Piuttosto utilizzare query SQL con parametri.
  • Non avere ID di incremento come user_id = 1, 2, 3 ecc ecc. E quindi usarlo in un URL, qualcosa.aspx? User_id = 1, posso quindi indovinare il prossimo id e speranza di sessione. Lo stesso per gli account e ogni altra cosa è sensibile.
  • Attenzione per XSS, (cross site scripting). Se accetti l'input dell'utente e lo memorizzi direttamente, assicurati che non possano inserire insert alert() per il loro nome o qualcosa del genere.

Questo non è affatto un elenco completo. Solo le cose che ho incontrato di recente.