Durante lo sviluppo abbiamo aggiunto ai registri degli errori i dettagli delle richieste http, comprese le intestazioni, per comprendere meglio l'analisi degli errori. Il nostro architetto ha sottolineato che non dovremmo inserire informazioni sensibili nei log. La mia domanda era se dovessimo considerare il token bearer come informazioni altamente sensibili tenendo conto che il token di accesso è un oggetto di breve durata.
I consigli di Framework di autorizzazione di OAuth 2.0: utilizzo di token bearer :
If bearer tokens are passed in page URLs, attackers might be able to steal them from the history data, logs, or other unsecured locations.
Suppongo che anche la registrazione dei token nei log degli errori non sia raccomandata.
Tuttavia Asp.Net Core genera messaggi informativi, che include token bearer (sia codificati che in JSON)
2017-09-15 08:32:42.571 +00:00 [Information] Failed to validate the token "eyJ0eXAiOiJKV1QiLCJhb(I've truncated the token but full token can be decoded in JWT.io)". Microsoft.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10501: Signature validation failed. Unable to match 'kid': 'HHByKU-0DqAxxx', token: '{"alg":"RS256","typ":"JWT","x5t":"HHByKU-0DqAxxx","kid":"HHByKU-0DqAxxx"}.{"aud":"https://webjet.group/eb694f3a-xxx","iss":"https://sts.windows.net/5de0e68cxxx","iat":1505464062,"nbf":1505464062,"exp":1505467962,"acr":"1","aio":"ASQAxxx","amr":["pwd"],"appid":"cc9aa533-xxx","appidacr":"1","e_exp":262800,"family_name":"Freidgeim","given_name":"Michael","groups":[xxx]","2d62738a-xxx"],"in_corp":"true","ipaddr":"121.1.1.1","name":"Michael Freidgeim","oid":"138f5eca-xxx","onprem_sid":"S-1-5-21-xxx","roles":["UATAdmin"],"scp":"user_impersonation","sub":"vTFBQRxxx","tid":"5de0e68c-xxx","unique_name":"Michael.Freidgeim@xxx","upn":"Michael.Freidgeim@xxx","ver":"1.0"}'. at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(String token, TokenValidationParameters validationParameters) at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken(String token, TokenValidationParameters validationParameters, SecurityToken& validatedToken) at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.< HandleAuthenticateAsync>d__1.MoveNext()
Significa che il rischio non è così grande, perché Microsoft considera accettabile includere nei log?
O dovremmo escludere Microsoft / System Information LogLevel dai log? Sarà piuttosto restrittivo, dato che stiamo usando i log delle informazioni per le indagini, così come per alcuni monitoraggi / statistiche (come il numero di accessi).
Qual è l'approccio consigliato per l'archiviazione dei token nei log se vogliamo soddisfare i requisiti di sicurezza e investigativi?