'unsafe-inline' em script-src realmente anula a proteção contra XSS?
Na prática sim para o vetor mais comum: a maioria dos ataques XSS injeta um `<script>` ou um atributo de evento inline na página, e `'unsafe-inline'` permite exatamente esse tipo de código rodar sem restrição; a política ainda bloqueia scripts de origem externa não listada, mas perde a defesa contra o tipo de injeção mais frequente.
Qual a diferença prática entre nonce e hash no CSP?
Nonce é um valor aleatório gerado pelo servidor a cada resposta e repetido tanto na diretiva quanto na tag do script, então cada página carregada tem um nonce diferente; hash é o resultado de aplicar SHA-256, SHA-384 ou SHA-512 sobre o conteúdo exato do script permitido, então funciona bem para scripts inline fixos que não mudam a cada requisição, sem precisar gerar nada novo no servidor.
Content-Security-Policy-Report-Only bloqueia alguma coisa?
Não. Ele aplica as mesmas regras da política normal só para fins de avaliação: qualquer coisa que violaria a política continua carregando e rodando normalmente, mas um relatório da violação é enviado ao endpoint configurado em `report-to`, o que permite testar uma política nova em produção sem quebrar nada antes de trocar para o cabeçalho `Content-Security-Policy` de verdade.
Por que object-src 'none' aparece em quase toda política recomendada?
Porque `object-src` controla plugins como `<object>`, `<embed>` e `<applet>`, tecnologias antigas como Flash que tinham suas próprias formas de executar código independente das regras de `script-src`; travar essa diretiva em `'none'` fecha uma via de execução que nem o restante da política consegue enxergar.