aboutsummaryrefslogtreecommitdiff
path: root/aulas/seguranca.rst
blob: 287203510aec162989f48d2cc35d9a4879fa2cad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
6. Segurança e privacidade
==========================

6.1 - Segurança começa no desenvolvimento
-----------------------------------------

* Criptografia é só uma parte das práticas seguras.
* Modelagem de ameaças e testes de penetração: inverta os papéis: e se você fosse o/a atacante?
* A dificuldade de se encontrar vulnerabilidades.
* Segurança por isolamento.

6.2 - Use bibliotecas criptográficas consolidadas!
--------------------------------------------------

* Erros de implementação são grandes fontes de brechas de segurança.
* Caso você precise implementar primitivas criptográficas no seu código, use bibliotecas existentes!
* Encapsule as conexões das suas aplicações em canais criptografados.
* TLS é o protocolo mais consolidado e adequado, apesar de não ser perfeito.

6.3 - Princípio das permissões mínimas
--------------------------------------

* Exemplo básico.
* Permissões de arquivos são propriedades no sistema de arquivo!
* Elas não são necessariamente preservadas com a cópia de arquivos entre sistemas!

Roteiro do screencast:

::

  # Vendo as permissões e a posse de arquivos e pastas
  ls -l projetos

  # Mudando as permissões de um arquivo
  touch cofrinho
  chmod 000 cofrinho
  chmod 600 cofrinho

  # Mudando a posse de arquivos e pastas
  chown

6.4 - Criptografia básica
-------------------------

* Assinaturas digitais.
* Comunicação cifrada.
* Checagem de integridade de código no git e em geral.

6.5 - Certificados x509 para SSL/TLS/HTTPS
------------------------------------------

* `Let's Encrypt <https://letsencrypt.org>`_.