• Nenhum resultado encontrado

John Paul Mueller. Novatec

N/A
N/A
Protected

Academic year: 2021

Share "John Paul Mueller. Novatec"

Copied!
11
0
0

Texto

(1)

John Paul Mueller

(2)

Authorized Portuguese translation of the English edition of Security for Web Developers, ISBN 9781491928646 © 2015 John Mueller. This translation is published and sold by permission of O'Reilly Media, Inc., which owns or controls all rights to publish and sell the same.

Tradução em português autorizada da edição em inglês da obra Security for Web Developers, ISBN 9781491928646 © 2015 John Mueller. Esta tradução é publicada e vendida com a permissão da O'Reilly Media, Inc., detentora de todos os direitos para publicação e venda desta obra.

© Novatec Editora Ltda. 2016.

Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora.

Editor: Rubens Prates MP20160304

Tradução: Lúcia Kinoshita

Revisão gramatical: Smirna Cavalheiro Assistente editorial: Priscila A. Yoshimatsu Editoração eletrônica: Carolina Kuwabata ISBN: 978-85-7522-484-7

Histórico de impressões:

Março/2016 Primeira edição Novatec Editora Ltda.

Rua Luís Antônio dos Santos 110 02460-000 – São Paulo, SP – Brasil Tel.: +55 11 2959-6529 Email: novatec@novatec.com.br Site: www.novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec

(3)

7

Sumário

Prefácio ... 17

Parte I

Desenvolvendo um plano de segurança ...25

Capítulo 1

Definindo o ambiente da aplicação ...26

Especificando as ameaças às aplicações web ...27

Entendendo a Software Security Assurance (SSA) ...33

Considerando o OSSAP ...34

Definindo os requisitos de SSA ...35

Classificando dados e recursos ...37

Fazendo a análise necessária ...37

Mergulhando em questões específicas de linguagem ...41

Definindo os principais problemas de HTML ...42

Definindo os principais problemas de CSS ...43

Definindo os principais problemas de JavaScript ...44

Considerando o essencial para defesa nos endpoints ...45

Evitando falhas de segurança ...45

Detectando falhas de segurança ...47

Corrigindo um software com problemas ...48

Lidando com armazenamento em nuvem ...49

Usando códigos e recursos externos ...51

Definindo o uso de bibliotecas ...52

Definindo o uso de APIs...53

Definindo o uso de microsserviços ...55

Acessando dados externos...56

Permitindo acesso a outros ...58

Capítulo 2

Acolhendo as necessidades e expectativas dos usuários ...60

Desenvolvendo uma visão de usuário à aplicação ...61

Considerando os problemas de BYOD (Bring Your Own Device) ...63

Entendendo a segurança de aplicações baseadas em web ...63

(4)

Segurança para Desenvolvedores Web 8

Usando navegadores customizados ...66

Verificando problemas de compatibilidade de código ...68

Tratando atualizações quase contínuas de dispositivos ...71

Planejando alternativas a senhas ...73

Trabalhando com frases-senha ...74

Usando soluções biométricas ...75

Contando com cartões-chave ...78

Contando com chaves USB ...79

Implementando uma estratégia de token ...80

Focando nas expectativas dos usuários ...80

Deixando a aplicação fácil de usar ...81

Deixando a aplicação rápida ...81

Criando um ambiente confiável ...82

Mantendo a segurança em perspectiva ...83

Capítulo 3

Obtendo assistência de terceiros ...84

Identificando soluções de terceiros para segurança ...85

Considerando soluções para segurança em nuvem ...87

Entendendo os repositórios de dados ...88

Lidando com problemas de compartilhamento de arquivos ...90

Considerando o armazenamento em nuvem ...94

Escolhendo um tipo de produto ...96

Trabalhando com bibliotecas ...97

Acessando APIs ...98

Considerando os microsserviços ...100

Parte II

Aplicando práticas de programação bem-sucedidas ...102

Capítulo 4

Desenvolvendo interfaces bem-sucedidas ... 103

Acessando a interface de usuário ...104

Criando uma interface clara ...105

Deixando as interfaces flexíveis ...108

Oferecendo auxílio ao usuário ... 111

Definindo os problemas de acessibilidade ...113

Oferecendo opções controladas ... 116

Escolhendo um nível de solução para interface de usuário ...121

Implementando controles HTML padrão ...121

Trabalhando com controles CSS ...122

(5)

9 Sumário

Validando a entrada ...126

Permitindo apenas entradas específicas...126

Procurando dados de entrada furtivos ...128

Solicitando novas entradas ...128

Usando validação tanto do lado cliente quanto do lado servidor ...129

Esperando o inesperado ...130

Capítulo 5

Implementando um código confiável ... 132

Diferenciando confiabilidade e segurança ...134

Definindo os papéis da confiabilidade e da segurança ...134

Evitando brechas de segurança em códigos confiáveis ...138

Focando nas funcionalidades da aplicação ...140

Desenvolvendo protocolos de equipe ... 141

Criando um ciclo de feedback de lições aprendidas ... 145

Considerando os problemas de soluções prontas ... 147

Lidando com bibliotecas externas ...148

Lidando com APIs externas ...150

Trabalhando com frameworks ...152

Acionando os microsserviços ...155

Capítulo 6

Incorporando bibliotecas ... 157

Considerando os usos de bibliotecas ...158

Melhorando o CSS com bibliotecas ...158

Interagindo com HTML usando bibliotecas ...162

Estendendo o JavaScript com bibliotecas ...164

Diferenciando bibliotecas armazenadas internamente de bibliotecas armazenadas externamente ...166

Definindo as ameaças de segurança causadas por bibliotecas ...168

Habilitando o modo estrito ...170

Desenvolvendo uma CSP (Content Security Policy) ...173

Incorporando bibliotecas de forma segura ... 174

Fazendo uma pesquisa completa sobre a biblioteca ... 175

Definindo exatamente quais são os usos da biblioteca ... 176

Mantendo o tamanho da biblioteca reduzido e o conteúdo focado ... 176

Executando os testes necessários ...178

Diferenciando bibliotecas de frameworks ...178

Capítulo 7

Usando APIs com cuidado ... 182

Diferenciando APIs de bibliotecas ...183

Considerando as diferenças em popularidade ...184

(6)

Segurança para Desenvolvedores Web 10

Estendendo JavaScript usando APIs ...187

Localizando as APIs apropriadas ...187

Criando um exemplo simples ...189

Definindo as ameaças de segurança causadas por APIs...194

Arruinando seu bom nome com o MailPoet ...195

Desenvolvendo uma imagem do snappening ...196

Perdendo seu dispositivo com o Find My iPhone ...197

Deixando suas informações mais importantes vazarem com o Heartbleed ....197

Sofrendo com o Shellshock ...198

Acessando APIs de forma segura a partir de JavaScript ...199

Verificando a segurança da API ...199

Testando entradas e saídas ...200

Mantendo os dados localizados e seguros ...201

Programando de forma defensiva ...202

Capítulo 8

Considerando o uso de microsserviços ... 203

Definindo microsserviços ...204

Especificando as características dos microsserviços ...204

Diferenciando microsserviços de bibliotecas ...206

Diferenciando microsserviços de APIs ...207

Considerando as políticas dos microsserviços ...207

Fazendo chamadas a microsserviços usando JavaScript ...209

Entendendo o papel do REST na comunicação ...211

Transmitindo dados usando JSON ...211

Definindo as ameaças de segurança causadas por microsserviços ...216

Falta de consistência ...216

Considerando o papel da máquina virtual ... 217

Usando JSON para transferências de dados ...218

Definindo a TLS ...219

Criando paths alternativos para microsserviços...220

Parte III

Criando estratégias de testes úteis e eficientes ...222

Capítulo 9

Pensando como um hacker ...223

Definindo a necessidade de scans de segurança web ...224

Criando um sistema de testes ...228

Obtendo o treinamento necessário ...229

Criando o ambiente correto ...230

Usando máquinas virtuais ...231

(7)

11 Sumário

Configurando o sistema ...233

Restaurando o sistema ...234

Definindo as fontes mais comuns de brechas de segurança ...234

Evitando ataques de injeção de SQL ...235

Entendendo o Cross-Site Scripting ...237

Enfrentando problemas de negação de serviço (denial-of-service) ...238

Aproveitando-se da localização previsível de recursos ...239

Evitando a divulgação de informações que não deveriam ser reveladas ...240

Testando em um ambiente BYOD ... 241

Configurando uma zona de acesso remoto ...242

Verificando hacks entre aplicações ...243

Lidando com equipamentos e softwares realmente antigos ...244

Contando com testes de usuário ...245

Deixando o usuário correr solto ...246

Desenvolvendo passos reproduzíveis ...247

Dando voz ao usuário ...248

Usando pentesters externos ...249

Considerando a empresa de testes de invasão ...249

Gerenciando o projeto ...250

Incluindo o essencial ...251

Obtendo o relatório ...252

Capítulo 10

Criando uma zona de segurança para APIs ... 253

Entendendo o conceito de zona de segurança de API ...254

Definindo a necessidade de uma zona de segurança de API ...256

Garantindo que sua API funcione ...256

Possibilitando um desenvolvimento rápido ...257

Garantindo a melhor integração possível ...258

Verificando se a API se comporta quando houver carga ...264

Mantendo a API segura contra hackers ...265

Desenvolvendo com uma API em sandbox ...266

Usando uma solução de prateleira ...268

Usando sandboxes de outros fornecedores ...269

Considerando ambientes virtuais ...272

Definindo o ambiente virtual ...272

Diferenciando ambientes virtuais de sandboxing ...273

Implementando a virtualização ... 274

(8)

Segurança para Desenvolvedores Web 12

Capítulo 11

Verificando se há brechas de segurança em bibliotecas e APIs ... 276

Criando um plano de testes ...278

Considerando metas e objetivos ...278

Testando bibliotecas internas ...288

Testando APIs internas ...289

Testando bibliotecas externas ...290

Testando APIs externas ...290

Estendendo os testes aos microsserviços ...291

Testando bibliotecas e APIs individualmente ...292

Criando um test harness para bibliotecas ...292

Criando scripts de teste para APIs ...293

Estendendo as estratégias de teste aos microsserviços ...294

Desenvolvendo estratégias de resposta ...295

Realizando testes de integração ...295

Testando problemas específicos de linguagem ...297

Projetando testes para problemas de HTML ...298

Projetando testes para problemas de CSS ...299

Projetando testes para problemas de JavaScript ...300

Capítulo 12

Usando empresas terceirizadas de testes ... 303

Localizando serviços de testes oferecidos por terceiros ...304

Definindo os motivos para contratar um terceiro ...304

Considerando a variedade de possíveis serviços de testes ...306

Garantindo a legitimidade do terceiro ...309

Entrevistando o terceiro ... 310

Realizando testes em uma instalação para testes ... 310

Criando um plano de testes ... 311

Especificando as metas da empresa terceirizada nos testes... 311

Gerando um plano de testes por escrito ... 311

Listando as saídas dos testes e os requisitos de relatório ...312

Considerando os requisitos de testes ...313

Implementando um plano de testes... 314

Determinando a participação da empresa nos testes ... 314

Iniciando o processo de testes ...315

Fazendo a monitoração necessária nos testes ... 316

Tratando problemas inesperados nos testes ... 316

Usando os relatórios resultantes ... 317

Discutindo o relatório gerado com o terceiro ... 317

Apresentando o relatório à empresa ... 318

(9)

13 Sumário

Parte IV

Implementando um ciclo de manutenção ... 320

Capítulo 13

Definindo claramente os ciclos de upgrade ... 321

Desenvolvendo um plano detalhado de ciclo de upgrade ...321

Procurando upgrades ...323

Determinando os requisitos do upgrade ...324

Definindo a criticidade do upgrade ...327

Verificando upgrades para ver se há problemas ...329

Criando cenários de testes ...332

Implementando as mudanças ...333

Criando um cronograma para teste de upgrade ...333

Executando os pré-testes necessários ...334

Executando os testes de integração necessários ...335

Passando um upgrade para o ambiente de produção ...336

Capítulo 14

Considerando as opções de update ... 339

Diferenciando entre upgrades e updates ...340

Determinando quando o update deve ser feito ...342

Trabalhando com updates de biblioteca ...342

Trabalhando com updates de API e microsserviços ...344

Aceitando updates automáticos ...347

Fazendo update em pacotes de idiomas ...347

Criando uma lista de idiomas aceitos ...348

Contando com especialistas de confiança em idiomas ...350

Conferindo se os prompts específicos de um idioma funcionam na aplicação 351 Garantindo que os dados apareçam no formato correto ...351

Definindo os requisitos especiais para testes de suporte a idiomas ...352

Efetuando updates de emergência ...353

Evitando as emergências sempre que for possível ...353

Criar uma equipe para respostas rápidas ...354

Executando testes simplificados ...354

Criando um cronograma permanente de updates ...355

Criando um cronograma para testes de update ...355

Capítulo 15

Considerando a necessidade de relatórios ... 357

Usando relatórios para fazer alterações ...358

Evitando relatórios inúteis ...358

Controlando o instante e a frequência de relatórios de upgrades e updates ....360

Usando relatórios gerados automaticamente ...361

Usando relatórios personalizados ...362

(10)

Segurança para Desenvolvedores Web 14

Usando relatórios para executar tarefas específicas da aplicação ...365

Criando relatórios internos ...366

Determinando quais fontes de dados serão usadas ...366

Especificando usos para os relatórios ...368

Contando com relatórios gerados externamente ...369

Obtendo relatórios completos de terceiros ...369

Desenvolvendo relatórios a partir de dados brutos ...370

Mantendo os dados internos seguros ...370

Possibilitando feedback de usuários ...371

Obtendo feedback de usuários ...372

Determinando a usabilidade do feedback de usuário ...373

Parte V

Localizando recursos de segurança ... 376

Capítulo 16

Monitorando as ameaças de segurança atuais ... 377

Desenvolvendo fontes para obter informações sobre ameaças de segurança ...379

Lendo artigos relacionados à segurança escritos por especialistas ...379

Verificando sites de segurança ...381

Obtendo informações de consultores ...383

Evitando sobrecarga de informações ...385

Criando um plano para upgrades baseado em ameaças ...386

Prevendo situações que não exigem nenhuma ação ...387

Decidir-se entre um upgrade e um update ...388

Definindo um plano de upgrade ...390

Criando um plano para updates baseado em ameaças ...391

Verificar se os updates resolvem as ameaças ...391

Determinando se a ameaça é uma emergência ...393

Definindo um plano de update ...394

Solicitando updates de terceiros ...394

Capítulo 17

Proporcionando o treinamento necessário ... 395

Criando um plano de treinamento interno para segurança ...396

Definindo os treinamentos necessários ...397

Definindo metas razoáveis ...398

Usando instrutores internos ...399

Monitorando os resultados ...401

Obtendo treinamento de terceiros para os desenvolvedores ...403

Especificando os requisitos de treinamento ...405

(11)

15 Sumário

Usando cursos online ...407

Contando com centros de treinamento ...408

Usando faculdades e universidades locais ...408

Garantindo que os usuários estejam cientes da segurança ...409

Criando treinamentos específicos para segurança ...409

Combinando treinamento com orientações por escrito ... 410

Criando e usando lembretes alternativos para segurança ... 411

Referências

Documentos relacionados

Desta forma, diante do baixo custo do moni- toramento passivo da qualidade do ar utilizando-se líquens como bioindicadores, este trabalho, além de ser pioneiro para a cidade

A recomendação do Comitê se tornaria evidência para o Juízo Arbitral, mas resguardado o seu poder para rever e revisar a

Artigo 6º - Os hospitais públicos e particulares de Porto Alegre, o Instituto Médico Legal, as clínicas geriátricas e casas de saúde localizadas neste Município somente

deve conter todas as receitas e todas as despesas, não constam na LOA as receitas de contribuições profissionais, as receitas correntes de serviços arrecadadas

DATA: 17/out PERÍODO: MATUTINO ( ) VESPERTINO ( X ) NOTURNO ( ) LOCAL: Bloco XXIB - sala 11. Horário Nº Trabalho Título do trabalho

Recolhimento do ISSQN devido pelos contribuintes em geral ou responsáveis, inclusive sociedades de profissionais liberais, relativamente aos fatos geradores ocorridos no mês de

O recebimento da denúncia contra Governador de Estado pelo STJ resulta no imediato afastamento do cargo. O STJ é que tem competência para aplicar medidas cautelares,

Ante a importância da agricultura camponesa para a manutenção da soberania alimentar das comunidades rurais e da população que vive nas cidades é necessário que as políticas