La revisione del codice di sicurezza dovrebbe coinvolgere colpevoli stilistici?

3

Ho lavorato nell'azienda A per meno di 1 anno e mi è stato affidato l'incarico di eseguire una revisione del codice di sicurezza per un piccolo progetto in cui sono stato coinvolto negli ultimi 3 mesi. Fino ad ora ho letto principalmente su comuni responsabili della sicurezza come SQL injection, XSS, ecc. E ho cercato di trovarli nel codebase.

Durante la recensione, tuttavia, sono incappato in qualcosa del tipo:

def user_id
  return (session[:user_id] ? session[:user_id] : NOT_LOGGED_IN)
end

NOT_LOGGED_IN valuta a "WEBUSER" . Per me questo sembrava pericoloso per vari motivi, quindi ho iniziato a commentare il frammento:

# INSECURE: Although the function works fine it can be susceptive to 
#           misuse since under the hood it sets a username to a non-user.

E poi ho iniziato a pensare .. Questo è effettivamente qualcosa che viene inserito in una sicurezza recensione del codice o nella più comune "revisione del codice"?

Ritengo che la principale differenza tra i problemi di sicurezza corretti come l'iniezione SQL e XSS sia che sono molto specifici e quindi obiettivi. Quando si tratta di nominare funzioni e variabili, coinvolge ciò che pensano le diverse persone e diventa così soggettivo. Qualcuno in questo caso potrebbe sostenere, ad esempio, che user è chiunque visiti il sito - non importa se è registrato o meno, in questo caso WEBUSER sarebbe un ID ospite valido (ma di nuovo è controintuitivo che molti tali utenti condividono lo stesso id).

Quindi, come dovrebbe qualcuno affrontare la battaglia tra problemi soggettivi e obiettivi?

    
posta Pithikos 30.09.2016 - 12:01
fonte

1 risposta

7

L'uso improprio della funzione può creare problemi di sicurezza in futuro, anche se funziona ora. In questo caso, tale funzione potrebbe effettivamente creare un problema di sicurezza ad un certo punto se usata in modo improprio.

Inoltre, vedo una revisione del codice di sicurezza come una revisione più mirata del codice. Se noti altre cose che possono migliorare il codice, non vedo ragioni per cui non dovrebbero essere menzionate, a patto che l'obiettivo dell'intera revisione sia la sicurezza.

A seconda della natura dei problemi, una nota alla fine non sarebbe distraente e sicuramente utile, ad es. "Inoltre, ho notato che l'uso di ... non è coerente in alcuni punti (ad esempio X, Y, Z)".

    
risposta data 30.09.2016 - 13:58
fonte

Leggi altre domande sui tag