Domanda

Sono uno sviluppatore web che è molto consapevole di sicurezza e cerco di fare le mie applicazioni web più sicuro possibile.

Come mai ho iniziato a scrivere le mie applicazioni Windows in C # e quando si tratta testare la sicurezza del mio C #, sono davvero solo un novizio.

Chiedo solo se qualcuno ha qualche buon tutorial / README di su come incidere la propria applicazione di Windows e la scrittura di codice sicuro.

È stato utile?

Soluzione

I libri di Michael Howard sono un buon punto di partenza;

C'è un sacco di link e articoli interessanti dal blog di Michael Howard qui

C'è una presentazione powerpoint interessante da Microsoft sulla valutazione delle minacce, rischi e ASP qui .

Altri suggerimenti

Oltre a tutte le risposte ovvie per prevenire i buffer overflow, l'iniezione di codice, sessione di dirottamento et. al. si dovrebbe trovare qualcun altro per controllare il codice / software, perché si può solo pensare a modi per hackerare il software che si sa come prevenire. Solo perché non è possibile trovare un modo per incidere il vostro proprio software che non vuol dire che nessun altro può.

Questo è qualcosa che è molto difficile da fare per voi, e penso che ci si sta avvicinando il problema dal punto di vista sbagliato. Se si sta scrivendo un'applicazione di qualsiasi dimensione, allora si tenta di fare con la sicurezza alla fine, con la ricerca di modi specifici di rompere il vostro proprio software, è quasi impossibile.

Questo è per una serie di motivi. È già pensa il software in un certo modo. Pensi di modi specifici di interazione con esso, e si sa come ottenere il meglio da essa. Non si pensi in termini di modi per sfruttare, e questa è una cosa difficile da fare con il software che siete intimamente familiare con.

Un altro problema è che il compito da questo punto è troppo grande da affrontare. Eventuali problemi che si fa trovare possono aprire qualsiasi numero di altri problemi. Un controllo a livello di sicurezza del sistema non è neanche lontanamente abbastanza granulare.

Che cosa si dovrebbe fare è pensare di sicurezza mentre si scrive il software. Scopri le migliori pratiche, e prendere in considerazione ogni metodo e la classe che si scrive dal punto di vista della sicurezza. Questo va di pari passo con il testing di unità, provare a prendere in considerazione ciò che gli ingressi potrebbero rendere questa parte specifica della mia pausa programma. e poi trattare con loro a quel livello.

Dopo di che penso che sia una questione di rispondere rapidamente alle eventuali problemi di sicurezza che si siano messi a conoscenza di.

Le piccole cose che ho incontrato attraverso la mia esperienza.

  • Non utilizzare SQL dinamico, si sono poi vulnerabile a SQL injection. Piuttosto utilizzare le query SQL con parametri.
  • Non hai ids incrementali come user_id = 1, 2, 3 ecc ecc e quindi utilizzare tale in un URL, something.aspx? User_id = 1, posso quindi indovinare la prossima sessione di id e speranza. Lo stesso vale per i conti e che mai altro è sensibile.
  • Attenzione per XSS, (cross site scripting). Se si accetta l'input dell'utente e memorizzarlo direttamente, fare in modo che essi non possono andare avviso inserto () per il loro nome o qualcosa del genere.

Questo non è affatto un elenco completo. Proprio la roba che ho incontrato di recente.

Si potrebbe fare molto peggio di lettura di Ross Anderson Sicurezza Ingegneria libro. 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 ha più chicche in esso.

Do atto è un libro che spiega come costruire la sicurezza in fin dall'inizio, non il modo di violare la sicurezza, ma l'esposizione di difetti di sicurezza assortiti dovrebbe darvi una buona idea per dove cominciare a guardare.

Per garantire la sua richiesta modulo di vincita aprirlo e cercare di fare tutto ciò che l'utente lambda non dovrebbe fare! Mi spiego:

Se "dici entra yes o no", provare con A-Z, 0-9 perché è quello che alcuni utenti fanno per cercare di trovare qualche traccia dello stack che potrebbe essere interessante. Così si può mettere ovunque validatori.

Attenzione di collegamento ai database, ma se si proviene da web dev si dovrebbe essere più consapevole di me:).

La parte più difficile è quello di guardare fuori sulle perdite di memoria o cose del genere, ma questo è in grandi grandi app o app non ben sviluppati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top