palestra criando aplicações seguras com php (2)

13
Criando aplicações seguras com PHP Leandro Lugaresi TcheLinux - Bento Gonçalves - 08/11/14

Upload: leandro-lugaresi

Post on 16-Jul-2015

128 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Palestra  criando aplicações seguras com php (2)

Criando aplicações

seguras com PHPLeandro Lugaresi

TcheLinux - Bento Gonçalves - 08/11/14

Page 2: Palestra  criando aplicações seguras com php (2)

Quem sou eu?→ Graduado em Análise e

desenvolvimento de sistemas pela

Ftec Bento Gonçalves

→ Desenvolvedor com 3 anos de

experiência em PHP/MySQL

→ Apaixonado por segurança e pelo

mundo open source

https://github.com/leandro-lugaresi

http://www.leandrolugaresi.com.br/

Page 3: Palestra  criando aplicações seguras com php (2)

Por onde começar?→ Estude!

⤷ http://br.phptherightway.com/

⤷ https://www.owasp.org

⤷ https://github.com/php/php-langspec/

⤷ http://www.amazon.com/Essential-PHP-Security-Chris-

Shiflett/dp/059600656X/

⤷ http://www.amazon.com/Pro-PHP-Security-Application-

Implementation/dp/1430233184/

⤷ http://www.phpit.com.br/artigos/hangout-construindo-uma-aplicacao-

php-a-prova-de-balas.phpit

→ Não confie no seu usuário

→ Utilize bibliotecas e frameworks (modernos) reconhecidos pelo mercado.

Page 4: Palestra  criando aplicações seguras com php (2)

OWASP top 10

http://owasptop10.googlecode.com/files/OWASP_Top_10_-_2013_Brazilian_Portuguese.

https://www.owasp.org/index.php/Main_Page

Page 5: Palestra  criando aplicações seguras com php (2)

Códigos de terceirosO Composer foi sem dúvidas uma das melhores coisas que aconteceram para

o PHP nos últimos anos. Ele tornou a obtenção de código de terceiros muito

mais fácil, porém deve se ter alguns cuidados na sua utilização.

→ Utilize bibliotecas e complementos estáveis e que tenham uma

comunidade em torno delas;

→ Identificar os componentes e suas versões que você está usando,

incluindo todas as suas dependências;

→ Monitorar a segurança destes componentes.

Ferramentas para auxiliar no trabalho:

→ https://security.sensiolabs.org/check

→ https://www.versioneye.com/

Page 6: Palestra  criando aplicações seguras com php (2)

Trabalhando com

ErrosFunções:

→ error_reporting() - Nível de erro a ser reportado

→ display_errors() - Exibir ou não os erros na tela

Aprenda a trabalhar com logs!

Bibliotecas:

→ monolog/monolog

→ zendframework/zend-log

Page 7: Palestra  criando aplicações seguras com php (2)

Sanitização

Funções do php:

→ htmlspecialchars()

→ htmlentities()

→ escapeshellcmd()

→ escapeshellarg()

→ filter_input()

→ strip_tags()

Toda entrada deve ser filtrada e toda saída deve ser “escapada”

Bibliotecas:

→ HTMLPurifier

→ OWASP AntiSamy

→ Templates Engines (Twig,

Smarty)

Page 8: Palestra  criando aplicações seguras com php (2)

SQL InjectionDefinição: Injeção de instruções SQL dentro de uma consulta (query).

Como evitar:

→ addslashes()

→ mysql_real_scape_string()

→ Prepared Statements

→ ORM*

ORM librarys:

→ Doctrine 2

→ RedBean

→ Propel

Page 9: Palestra  criando aplicações seguras com php (2)

PasswordsOpções inseguras:

→ Texto plano/ base64

→ MD4, MD5

→ SHA1, SHA256, SHA512

Problemas:

→ Foram feitos para serem velozes

→ GPUs modernas podem realizar

200M/s interações SHA512 -

hashcat

Opções seguras:

→ Bcrypt

→ PBKDF2

Observações:

→ Bcrypt cost >= 14

→ PBKDF2 interations = 100000

Page 10: Palestra  criando aplicações seguras com php (2)

CriptografiaNão utilize:

→ DES

→ 3DES

→ ECB mode

Opções seguras:

→ AES (rijndael-128)

→ rijndael-256

→ blowfish

Bibliotecas:

→ zendframework/zend-crypt

→ http://phpsec.owasp.org/

Importante! Não utilize rand() e

mt_rand(), elas não são opções

seguras. Utilize

openssl_random_pseudo_bytes() ou

mcrypt_create_iv() com o parâmetro

MCRYPT_DEV_URANDOM.

Page 11: Palestra  criando aplicações seguras com php (2)

Two Step AuthenticationPara o usuário ter a senha roubada é mais fácil do que você pensa! A

verificação em duas etapas (2FA) pode ajudar a manter afastadas pessoas má

intencionadas, mesmo que elas saibam a senha do seu usuário.

Funcionamento:

Adição de uma camada a mais de segurança. Após o login ser feito o servidor

manda um código verificador através de SMS, e-mail, hardware token ou

algum app instalado em seu smartphone.

Problemas:

A implementação de um sistema 2FA é geralmente custosa pois é necessário

a contratação de uma empresa que preste este serviço.

Page 12: Palestra  criando aplicações seguras com php (2)

Google AuthenticatorO Google Authenticator é um aplicativo para Android, IPhone e BlackBarry, ele

é utilizado pelo Google nas verificações em duas etapas de seus serviços.

O aplicativo acabou virando um serviço gratuito e pode ser utilizado por outros

sistemas que queiram implementar o 2FA.

Informações complementares:

→ https://www.google.com/landing/2step/index.html

→ https://code.google.com/p/google-authenticator/

→ https://github.com/leandro-lugaresi/google-authenticator

Page 13: Palestra  criando aplicações seguras com php (2)

Muito Obrigado :)