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?