SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
MySQL e PHP: Segurança
Carlos Santos
LabMM 4 - NTC - DeCA - UA
Aula 22, 16-05-2013
MySQL: recomendações
Servidor MySQL
• nunca utilizar o utilizador root para o acesso às BDs
• para cada BD, definir um novo utilizador só com acesso via localhost
(se aplicável)
MySQL: recomendações
Servidor MySQL
• atribuir os privilégios estritamente necessários a esse utilizador e apenas
na BD com que ele irá interagir
• se necessário, ter utilizadores com privilégios diferenciados para front
office e back office
Paradigma “Need to know only”
Esconder toda a informação que permita saber mais do que é necessário
sobre:
• ficheiros e pastas do servidor
• configuração do servidor Web
• configuração do PHP no servidor Web
• estrutura da BD
Listagem de diretórios/pastas
Não permitir o directory browsing
• não permitir ver os conteúdos de uma pasta quando não existe um
ficheiro por defeito
• colocar na pasta um ficheiro .htaccess (Options -Indexes)
• os efeitos do .htaccess são reflectidos nas subpastas
Informação sobre o servidor Web
Esconder informação sobre o servidor Web
• no .htaccess (ServerSignature Off)
• também é possível utilizando o httpd.conf
• qualquer informação disponível pode dar pistas que facilitam o
reconhecimento de falhas de segurança a explorar!
Configuração do PHP
Esconder informação sobre a configuração do PHP no servidor
• não permitir a execução da função phpinfo()
• php.ini (disable_functions = phpinfo)
• esta diretiva do php.ini pode ser utilizada para outras funções
potencialmente perigosas (disable_functions = phpinfo, exec,
passthru, shell_exec, system, proc_open, popen,
curl_exec, curl_multi_exec, parse_ini_file, show_source)
• não expor informação sobre o PHP
• php.ini (expose_php = ‘off’)
Mensagens de erro do PHP
Esconder mensagens de erros do PHP (expõem informações importantes
sobre os ficheiros, servidor e PHP)
• php.ini
; E_ALL & ~E_NOTICE (Show all errors, except for notices and coding standards warnings.)
; E_ALL & ~E_NOTICE | E_STRICT (Show all errors, except for notices)
; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors)
; E_ALL | E_STRICT (Show all errors, warnings and notices including coding standards.)
; Default Value: E_ALL & ~E_NOTICE
; Development Value: E_ALL | E_STRICT
; Production Value: E_ALL & ~E_DEPRECATED
error_reporting = E_ALL & ~E_DEPRECATED
; Default Value: On
; Development Value: On
; Production Value: Off
display_errors = Off
• em produção, ter log dos erros: log_errors=On e error_log=“file”
Exemplo: log file
Mais recomendações
PHP Security Consortium (http://phpsec.org/)
• na secção de projectos:
• Security Guide (PDF)
• PHPSecInfo: aplicação (Download & install)
Execução de ficheiros via Web
Impedir que se possam visualizar/alterar ou executar, via Web, ficheiros
potencialmente perigosos
• .htaccess
<Files ~ ".(log|inc|sql|ini)$">
Order allow,deny
Deny from all
</Files>
<Files ~ "^.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
extensões não permitidas
impedir o acesso ao .htaccess
Inclusão e upload de ficheiros
Incluir ficheiros sempre através do require/require_once -> qualquer erro
termina execução do PHP
No upload de ficheiros a partir de uma formulário:
• testar a extensão do ficheiro carregado: $_FILES[‘ficheiro’][‘type’] ou
através da função pathinfo()
• testar o tamanho do ficheiro carregado: $_FILES[‘ficheiro’][‘size’] ou
através da função filesize()
• no final usar sempre a função move_uploaded_file(), para colocar o
ficheiro na sua pasta destino
Filtragem de dados
Muitas das ameaças à segurança podem provir de dados maliciosos
introduzidos em formulários, variáveis superglobais ($_GET, $_POST,
$_SESSION, $_FILES, etc), queries à BD, etc…
• filtragem lógica -> associada à lógica do algoritmo de processamento
dos dados
• filtragem de limpeza -> remoção de todos os caracteres potencialmente
perigosos nos dados
• usar sempre -> filtragem cliente-side (JavaScript) + filtragem server-
side (PHP)
• evitar utilização de hidden form fields
• evitar, sempre que possível, a passagem de parâmetros na Query String
-> usar Variáveis de sessão
• parâmetros na Query String -> são de fácil edição e partilha e podem
revelar estrutura da BD ou de outros parâmetros da aplicação
Filtragem e codificação de dados
Valores contidos numa variável
• filter_var($a, FILTER_VALIDATE_INT);
• filter_var($a, FILTER_SANITIZE_NUMBER_INT);
• filter_var($b, FILTER_VALIDATE_EMAIL);
• filter_var($b, FILTER_SANITIZE_EMAIL);
• Mais critérios em http://php.net/manual/en/filter.constants.php
• Artigo sobre filtragem: http://www.phpro.org/tutorials/Filtering-Data-with-
PHP.html
Filtragem e codificação de dados
Preservar a formatação HTML mas codificar inputs para utilizarem HTML
entities
• htmlentities($d);
Limpar tags HTML e PHP
• strip_tags($e);
Problemas com codificação
• utf8_encode($e1);
• utf8_decode($e2);
Retirar espaços do início e do final de uma string
• trim($a);
Filtragem e codificação de dados
get_magic_quotes_gpc() -> avalia o estado da diretiva no php.ini
• por defeito está “Off” (no PHP 6 será removida!)
• quando “On” todos os valores vindos por $_GET, $_POST, $_COOKIE
recebem o escape automático de certos caracteres: ‘, ”, 
stripslashes() -> remove as  de uma string
$string = mysqli->real_escape_string($string)
• faz o escape de ‘, “ e
SQL Injection
A introdução de inputs não filtrados nas queries pode originar falhas de
segurança. É inadmissível em páginas de produção!
SQL Injection: funções de filtragem
Remover eventuais comandos SQL
• preg_replace ($padrao_a_procurar, $valor_substituicao,
$string_alvo_da_procura)
• $padrao_a_procurar = “/(…|…|…)/i”
palavras a procurar
(expressões regulares).
“i” no final torna pesquisa
case insensitive
function valida($a) {
$a = strip_tags($a); //remover tags
$a = mysqli->real_escape_string($a);
$padrao = "/(select|from|where|like|order|drop|insert|
delete|update|values|and|or|create|tables|table|#|;)/i";
$a = preg_replace($padrao, "", $a);
$a = trim($a);
return $a;
}!
Outras funções úteis na filtragem/validação
Pesquisa de padrões
• preg_match($padrao_a_procurar, $string_alvo_da_procura);
• preg_match("/@ua.pt/i",$f);
• preg_match("/^(?!d+$|[a-z]+$|.*[W_])/i",$g);
• http://www.phpf1.com/tutorial/php-regular-expression.html
• http://weblogtoolscollection.com/regex/regex.php
• ctype_alnum($string); -> valida caracteres alfanuméricos
• ctype_alpha($string); -> validação de caracteres alfabéticos
• ctype_digit($string); -> valida caracteres numéricos
Codificação de passwords
Armazenar na BD as passwords codificadas!
• MD5 (128bits)
• $pwd_codif = md5($pwd);
• SHA1 (160bits) ou hash()
• $pwd_codif = sha1($pwd);
• BASE64
• $pwd_codif = base64_encode($pwd);
• $pwd = base64_decode($pwd_codif);
• hash(...) e crypt(...)
• permitem escolher o tipo de codificação
• o crypt() permite adicionar uma string de SALT
XSS - Cross Site Scripting
Introdução de código (normalmente JS) em áreas de User Generated
Content (blogues, fóruns, comments, etc.)
• não é um ataque direto ao site, mas sim ao utilizador…
• diferenças entre browsers!
• Exemplo 1
• Input: <script language="javascript"> document.location="http://
www.ua.pt"; </script>
echo $_POST['campo1']; //vai redirecionar
• Exemplo 2
• Input: <script language="javascript"> document.location="http://
www.ua.pt"; </script>
echo strip_tags($_POST['campo1']); //não redireciona
echo htmlentities($_POST['campo1']); //não redireciona

Mais conteúdo relacionado

Mais procurados

Escrevendo códigos php seguros
Escrevendo códigos php segurosEscrevendo códigos php seguros
Escrevendo códigos php segurosDouglas V. Pasqua
 
Otimização e Escalabilidade
Otimização e EscalabilidadeOtimização e Escalabilidade
Otimização e Escalabilidademetzen
 
Pg2
Pg2Pg2
Pg2csmp
 
Angular >= 2 - One Framework Mobile & Desktop
Angular >= 2 - One Framework Mobile & DesktopAngular >= 2 - One Framework Mobile & Desktop
Angular >= 2 - One Framework Mobile & DesktopGDGFoz
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
DELPHI & MySQL - September 2004
DELPHI & MySQL - September 2004DELPHI & MySQL - September 2004
DELPHI & MySQL - September 2004Michel Alves
 
Desenvolvendo Extensões PECL
Desenvolvendo Extensões PECLDesenvolvendo Extensões PECL
Desenvolvendo Extensões PECLW3P Projetos Web
 
PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7iMasters
 
Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7Sérgio Lima
 
Arrays PHP - Criação de sites II
Arrays PHP - Criação de sites IIArrays PHP - Criação de sites II
Arrays PHP - Criação de sites IIinfo_cimol
 
Aula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites IIAula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites IIinfo_cimol
 
Privilégios de processos no OpenSolaris
Privilégios de processos no OpenSolarisPrivilégios de processos no OpenSolaris
Privilégios de processos no OpenSolarisRafael Barbolo
 

Mais procurados (18)

Escrevendo códigos php seguros
Escrevendo códigos php segurosEscrevendo códigos php seguros
Escrevendo códigos php seguros
 
Rest Beer v2
Rest Beer v2Rest Beer v2
Rest Beer v2
 
Web App Flaws - SQL Injection
Web App Flaws - SQL InjectionWeb App Flaws - SQL Injection
Web App Flaws - SQL Injection
 
Segurança Web com PHP5
Segurança Web com PHP5Segurança Web com PHP5
Segurança Web com PHP5
 
Otimização e Escalabilidade
Otimização e EscalabilidadeOtimização e Escalabilidade
Otimização e Escalabilidade
 
Pg2
Pg2Pg2
Pg2
 
Angular >= 2 - One Framework Mobile & Desktop
Angular >= 2 - One Framework Mobile & DesktopAngular >= 2 - One Framework Mobile & Desktop
Angular >= 2 - One Framework Mobile & Desktop
 
Php 02 Primeiros Passos
Php 02 Primeiros PassosPhp 02 Primeiros Passos
Php 02 Primeiros Passos
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
DELPHI & MySQL - September 2004
DELPHI & MySQL - September 2004DELPHI & MySQL - September 2004
DELPHI & MySQL - September 2004
 
Desenvolvendo Extensões PECL
Desenvolvendo Extensões PECLDesenvolvendo Extensões PECL
Desenvolvendo Extensões PECL
 
PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7
 
Owasp web app_flaws
Owasp web app_flawsOwasp web app_flaws
Owasp web app_flaws
 
Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7
 
Arrays PHP - Criação de sites II
Arrays PHP - Criação de sites IIArrays PHP - Criação de sites II
Arrays PHP - Criação de sites II
 
Aula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites IIAula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites II
 
Privilégios de processos no OpenSolaris
Privilégios de processos no OpenSolarisPrivilégios de processos no OpenSolaris
Privilégios de processos no OpenSolaris
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 

Semelhante a LabMM4 (T22 - 12/13) - segurança

LabMM4 (T16 - 12/13) - PHP + MySQL
LabMM4 (T16 - 12/13) - PHP + MySQLLabMM4 (T16 - 12/13) - PHP + MySQL
LabMM4 (T16 - 12/13) - PHP + MySQLCarlos Santos
 
Aula 01 PHP+MySQL - LabMM4
Aula 01 PHP+MySQL - LabMM4Aula 01 PHP+MySQL - LabMM4
Aula 01 PHP+MySQL - LabMM4Carlos Santos
 
PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...
PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...
PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...Tchelinux
 
Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Fabrízio Mello
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOLgrupoweblovers
 
Gerência de Configurações com o Puppet
Gerência de Configurações com o PuppetGerência de Configurações com o Puppet
Gerência de Configurações com o Puppetpericles_junior
 
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraPHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraFlávio Lisboa
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2PrinceGuru MS
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdoJorge Luís Gregório
 

Semelhante a LabMM4 (T22 - 12/13) - segurança (20)

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
 
Doctrine for dummies
Doctrine for dummiesDoctrine for dummies
Doctrine for dummies
 
Hello SAFE World!!!
Hello SAFE World!!!Hello SAFE World!!!
Hello SAFE World!!!
 
LabMM4 (T16 - 12/13) - PHP + MySQL
LabMM4 (T16 - 12/13) - PHP + MySQLLabMM4 (T16 - 12/13) - PHP + MySQL
LabMM4 (T16 - 12/13) - PHP + MySQL
 
Web app flaws
Web app flawsWeb app flaws
Web app flaws
 
Sapo Sessions PHP
Sapo Sessions PHPSapo Sessions PHP
Sapo Sessions PHP
 
Aula 01 PHP+MySQL - LabMM4
Aula 01 PHP+MySQL - LabMM4Aula 01 PHP+MySQL - LabMM4
Aula 01 PHP+MySQL - LabMM4
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
 
Php FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHPPhp FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHP
 
PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...
PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...
PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...
 
PHP FrameWARks - FISL
PHP FrameWARks - FISLPHP FrameWARks - FISL
PHP FrameWARks - FISL
 
Doctrine for Dummies
Doctrine for DummiesDoctrine for Dummies
Doctrine for Dummies
 
Dev Ext PHP
Dev Ext PHPDev Ext PHP
Dev Ext PHP
 
Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOL
 
Gerência de Configurações com o Puppet
Gerência de Configurações com o PuppetGerência de Configurações com o Puppet
Gerência de Configurações com o Puppet
 
Python 08
Python 08Python 08
Python 08
 
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraPHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
 

Mais de Carlos Santos

Is AI the Spice of our future?
Is AI the Spice of our future?Is AI the Spice of our future?
Is AI the Spice of our future?Carlos Santos
 
Mentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantesMentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantesCarlos Santos
 
1º Encontro Científico TCEdu
1º Encontro Científico TCEdu1º Encontro Científico TCEdu
1º Encontro Científico TCEduCarlos Santos
 
Tecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicialTecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicialCarlos Santos
 
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunosAVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunosCarlos Santos
 
AVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunosAVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunosCarlos Santos
 
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...Carlos Santos
 
Tecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho práticoTecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho práticoCarlos Santos
 
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)Carlos Santos
 
SAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning EnvironmentSAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning EnvironmentCarlos Santos
 
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO CampusRepensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO CampusCarlos Santos
 
A technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus projectA technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus projectCarlos Santos
 
SAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoSAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoCarlos Santos
 
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCARepensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCACarlos Santos
 
T20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidT20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidCarlos Santos
 
T19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificaçãoT19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificaçãoCarlos Santos
 
T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)Carlos Santos
 

Mais de Carlos Santos (20)

Is AI the Spice of our future?
Is AI the Spice of our future?Is AI the Spice of our future?
Is AI the Spice of our future?
 
Mentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantesMentoria entre pares de estudantes para estudantes
Mentoria entre pares de estudantes para estudantes
 
1º Encontro Científico TCEdu
1º Encontro Científico TCEdu1º Encontro Científico TCEdu
1º Encontro Científico TCEdu
 
Tecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicialTecnologias da Comunicação em Educação 2018: Aula inicial
Tecnologias da Comunicação em Educação 2018: Aula inicial
 
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunosAVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunos
 
AVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunosAVILA Crew – Uma experiência de tutoria de alunos para alunos
AVILA Crew – Uma experiência de tutoria de alunos para alunos
 
chmod 777 education
chmod 777 educationchmod 777 education
chmod 777 education
 
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...
 
Tecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho práticoTecnologias da Comunicação em Educação: trabalho prático
Tecnologias da Comunicação em Educação: trabalho prático
 
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
Sessão de acolhimento do MCMM da Universidade de Aveiro (2016/2017)
 
chmod 777 education
chmod 777 educationchmod 777 education
chmod 777 education
 
SAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning EnvironmentSAPO Campus towards a
 Smart Learning Environment
SAPO Campus towards a
 Smart Learning Environment
 
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO CampusRepensar a tecnologia em contexto educativo: o caso do SAPO Campus
Repensar a tecnologia em contexto educativo: o caso do SAPO Campus
 
A technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus projectA technological approach to Open and Social Learning: 
the SAPO Campus project
A technological approach to Open and Social Learning: 
the SAPO Campus project
 
SAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativoSAPO Campus: Gamification em contexto educativo
SAPO Campus: Gamification em contexto educativo
 
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCARepensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
Repensar a tecnologia em contextos educativos: o SAPO Campus no DeCA
 
T20_LM3: APIs e Scoreoid
T20_LM3: APIs e ScoreoidT20_LM3: APIs e Scoreoid
T20_LM3: APIs e Scoreoid
 
T19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificaçãoT19_LM3: Projeto final e documentação de planificação
T19_LM3: Projeto final e documentação de planificação
 
T18_LM3: Ajax
T18_LM3: AjaxT18_LM3: Ajax
T18_LM3: Ajax
 
T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)
 

Último

PRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basicoPRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basicoSilvaDias3
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...LuizHenriquedeAlmeid6
 
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNASQUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNASEdinardo Aguiar
 
VALORES HUMANOS NA DISCIPLINA DE ENSINO RELIGIOSO
VALORES HUMANOS NA DISCIPLINA DE ENSINO RELIGIOSOVALORES HUMANOS NA DISCIPLINA DE ENSINO RELIGIOSO
VALORES HUMANOS NA DISCIPLINA DE ENSINO RELIGIOSOBiatrizGomes1
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxLuizHenriquedeAlmeid6
 
19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileirosMary Alvarenga
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfAnaGonalves804156
 
Aula 1, 2 Bacterias Características e Morfologia.pptx
Aula 1, 2  Bacterias Características e Morfologia.pptxAula 1, 2  Bacterias Características e Morfologia.pptx
Aula 1, 2 Bacterias Características e Morfologia.pptxpamelacastro71
 
Currículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfCurrículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfIedaGoethe
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfHenrique Pontes
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPanandatss1
 
Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasCasa Ciências
 
Slides criatividade 01042024 finalpdf Portugues.pdf
Slides criatividade 01042024 finalpdf Portugues.pdfSlides criatividade 01042024 finalpdf Portugues.pdf
Slides criatividade 01042024 finalpdf Portugues.pdfpaulafernandes540558
 
Cartilha 1º Ano Alfabetização _ 1º Ano Ensino Fundamental
Cartilha 1º Ano Alfabetização _ 1º Ano Ensino FundamentalCartilha 1º Ano Alfabetização _ 1º Ano Ensino Fundamental
Cartilha 1º Ano Alfabetização _ 1º Ano Ensino Fundamentalgeone480617
 
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfDIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfIedaGoethe
 
Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?MrciaRocha48
 
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxApostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxIsabelaRafael2
 
HABILIDADES ESSENCIAIS - MATEMÁTICA 4º ANO.pdf
HABILIDADES ESSENCIAIS  - MATEMÁTICA 4º ANO.pdfHABILIDADES ESSENCIAIS  - MATEMÁTICA 4º ANO.pdf
HABILIDADES ESSENCIAIS - MATEMÁTICA 4º ANO.pdfdio7ff
 

Último (20)

PRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basicoPRIMEIRO---RCP - DEA - BLS estudos - basico
PRIMEIRO---RCP - DEA - BLS estudos - basico
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
 
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
Slides Lição 3, Betel, Ordenança para congregar e prestar culto racional, 2Tr...
 
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNASQUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
QUIZ DE MATEMATICA SHOW DO MILHÃO PREPARAÇÃO ÇPARA AVALIAÇÕES EXTERNAS
 
VALORES HUMANOS NA DISCIPLINA DE ENSINO RELIGIOSO
VALORES HUMANOS NA DISCIPLINA DE ENSINO RELIGIOSOVALORES HUMANOS NA DISCIPLINA DE ENSINO RELIGIOSO
VALORES HUMANOS NA DISCIPLINA DE ENSINO RELIGIOSO
 
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptxSlides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
Slides Lição 4, CPAD, Como se Conduzir na Caminhada, 2Tr24.pptx
 
19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
 
Aula 1, 2 Bacterias Características e Morfologia.pptx
Aula 1, 2  Bacterias Características e Morfologia.pptxAula 1, 2  Bacterias Características e Morfologia.pptx
Aula 1, 2 Bacterias Características e Morfologia.pptx
 
Currículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdfCurrículo escolar na perspectiva da educação inclusiva.pdf
Currículo escolar na perspectiva da educação inclusiva.pdf
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SP
 
Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de Partículas
 
treinamento brigada incendio 2024 no.ppt
treinamento brigada incendio 2024 no.ppttreinamento brigada incendio 2024 no.ppt
treinamento brigada incendio 2024 no.ppt
 
Slides criatividade 01042024 finalpdf Portugues.pdf
Slides criatividade 01042024 finalpdf Portugues.pdfSlides criatividade 01042024 finalpdf Portugues.pdf
Slides criatividade 01042024 finalpdf Portugues.pdf
 
Cartilha 1º Ano Alfabetização _ 1º Ano Ensino Fundamental
Cartilha 1º Ano Alfabetização _ 1º Ano Ensino FundamentalCartilha 1º Ano Alfabetização _ 1º Ano Ensino Fundamental
Cartilha 1º Ano Alfabetização _ 1º Ano Ensino Fundamental
 
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfDIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
 
Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?Empreendedorismo: O que é ser empreendedor?
Empreendedorismo: O que é ser empreendedor?
 
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxApostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
 
HABILIDADES ESSENCIAIS - MATEMÁTICA 4º ANO.pdf
HABILIDADES ESSENCIAIS  - MATEMÁTICA 4º ANO.pdfHABILIDADES ESSENCIAIS  - MATEMÁTICA 4º ANO.pdf
HABILIDADES ESSENCIAIS - MATEMÁTICA 4º ANO.pdf
 

LabMM4 (T22 - 12/13) - segurança

  • 1. MySQL e PHP: Segurança Carlos Santos LabMM 4 - NTC - DeCA - UA Aula 22, 16-05-2013
  • 2. MySQL: recomendações Servidor MySQL • nunca utilizar o utilizador root para o acesso às BDs • para cada BD, definir um novo utilizador só com acesso via localhost (se aplicável)
  • 3. MySQL: recomendações Servidor MySQL • atribuir os privilégios estritamente necessários a esse utilizador e apenas na BD com que ele irá interagir • se necessário, ter utilizadores com privilégios diferenciados para front office e back office
  • 4. Paradigma “Need to know only” Esconder toda a informação que permita saber mais do que é necessário sobre: • ficheiros e pastas do servidor • configuração do servidor Web • configuração do PHP no servidor Web • estrutura da BD
  • 5. Listagem de diretórios/pastas Não permitir o directory browsing • não permitir ver os conteúdos de uma pasta quando não existe um ficheiro por defeito • colocar na pasta um ficheiro .htaccess (Options -Indexes) • os efeitos do .htaccess são reflectidos nas subpastas
  • 6. Informação sobre o servidor Web Esconder informação sobre o servidor Web • no .htaccess (ServerSignature Off) • também é possível utilizando o httpd.conf • qualquer informação disponível pode dar pistas que facilitam o reconhecimento de falhas de segurança a explorar!
  • 7. Configuração do PHP Esconder informação sobre a configuração do PHP no servidor • não permitir a execução da função phpinfo() • php.ini (disable_functions = phpinfo) • esta diretiva do php.ini pode ser utilizada para outras funções potencialmente perigosas (disable_functions = phpinfo, exec, passthru, shell_exec, system, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source) • não expor informação sobre o PHP • php.ini (expose_php = ‘off’)
  • 8. Mensagens de erro do PHP Esconder mensagens de erros do PHP (expõem informações importantes sobre os ficheiros, servidor e PHP) • php.ini ; E_ALL & ~E_NOTICE (Show all errors, except for notices and coding standards warnings.) ; E_ALL & ~E_NOTICE | E_STRICT (Show all errors, except for notices) ; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors) ; E_ALL | E_STRICT (Show all errors, warnings and notices including coding standards.) ; Default Value: E_ALL & ~E_NOTICE ; Development Value: E_ALL | E_STRICT ; Production Value: E_ALL & ~E_DEPRECATED error_reporting = E_ALL & ~E_DEPRECATED ; Default Value: On ; Development Value: On ; Production Value: Off display_errors = Off • em produção, ter log dos erros: log_errors=On e error_log=“file”
  • 10. Mais recomendações PHP Security Consortium (http://phpsec.org/) • na secção de projectos: • Security Guide (PDF) • PHPSecInfo: aplicação (Download & install)
  • 11. Execução de ficheiros via Web Impedir que se possam visualizar/alterar ou executar, via Web, ficheiros potencialmente perigosos • .htaccess <Files ~ ".(log|inc|sql|ini)$"> Order allow,deny Deny from all </Files> <Files ~ "^.ht"> Order allow,deny Deny from all Satisfy All </Files> extensões não permitidas impedir o acesso ao .htaccess
  • 12. Inclusão e upload de ficheiros Incluir ficheiros sempre através do require/require_once -> qualquer erro termina execução do PHP No upload de ficheiros a partir de uma formulário: • testar a extensão do ficheiro carregado: $_FILES[‘ficheiro’][‘type’] ou através da função pathinfo() • testar o tamanho do ficheiro carregado: $_FILES[‘ficheiro’][‘size’] ou através da função filesize() • no final usar sempre a função move_uploaded_file(), para colocar o ficheiro na sua pasta destino
  • 13. Filtragem de dados Muitas das ameaças à segurança podem provir de dados maliciosos introduzidos em formulários, variáveis superglobais ($_GET, $_POST, $_SESSION, $_FILES, etc), queries à BD, etc… • filtragem lógica -> associada à lógica do algoritmo de processamento dos dados • filtragem de limpeza -> remoção de todos os caracteres potencialmente perigosos nos dados • usar sempre -> filtragem cliente-side (JavaScript) + filtragem server- side (PHP) • evitar utilização de hidden form fields • evitar, sempre que possível, a passagem de parâmetros na Query String -> usar Variáveis de sessão • parâmetros na Query String -> são de fácil edição e partilha e podem revelar estrutura da BD ou de outros parâmetros da aplicação
  • 14. Filtragem e codificação de dados Valores contidos numa variável • filter_var($a, FILTER_VALIDATE_INT); • filter_var($a, FILTER_SANITIZE_NUMBER_INT); • filter_var($b, FILTER_VALIDATE_EMAIL); • filter_var($b, FILTER_SANITIZE_EMAIL); • Mais critérios em http://php.net/manual/en/filter.constants.php • Artigo sobre filtragem: http://www.phpro.org/tutorials/Filtering-Data-with- PHP.html
  • 15. Filtragem e codificação de dados Preservar a formatação HTML mas codificar inputs para utilizarem HTML entities • htmlentities($d); Limpar tags HTML e PHP • strip_tags($e); Problemas com codificação • utf8_encode($e1); • utf8_decode($e2); Retirar espaços do início e do final de uma string • trim($a);
  • 16. Filtragem e codificação de dados get_magic_quotes_gpc() -> avalia o estado da diretiva no php.ini • por defeito está “Off” (no PHP 6 será removida!) • quando “On” todos os valores vindos por $_GET, $_POST, $_COOKIE recebem o escape automático de certos caracteres: ‘, ”, stripslashes() -> remove as de uma string $string = mysqli->real_escape_string($string) • faz o escape de ‘, “ e
  • 17. SQL Injection A introdução de inputs não filtrados nas queries pode originar falhas de segurança. É inadmissível em páginas de produção!
  • 18. SQL Injection: funções de filtragem Remover eventuais comandos SQL • preg_replace ($padrao_a_procurar, $valor_substituicao, $string_alvo_da_procura) • $padrao_a_procurar = “/(…|…|…)/i” palavras a procurar (expressões regulares). “i” no final torna pesquisa case insensitive function valida($a) { $a = strip_tags($a); //remover tags $a = mysqli->real_escape_string($a); $padrao = "/(select|from|where|like|order|drop|insert| delete|update|values|and|or|create|tables|table|#|;)/i"; $a = preg_replace($padrao, "", $a); $a = trim($a); return $a; }!
  • 19. Outras funções úteis na filtragem/validação Pesquisa de padrões • preg_match($padrao_a_procurar, $string_alvo_da_procura); • preg_match("/@ua.pt/i",$f); • preg_match("/^(?!d+$|[a-z]+$|.*[W_])/i",$g); • http://www.phpf1.com/tutorial/php-regular-expression.html • http://weblogtoolscollection.com/regex/regex.php • ctype_alnum($string); -> valida caracteres alfanuméricos • ctype_alpha($string); -> validação de caracteres alfabéticos • ctype_digit($string); -> valida caracteres numéricos
  • 20. Codificação de passwords Armazenar na BD as passwords codificadas! • MD5 (128bits) • $pwd_codif = md5($pwd); • SHA1 (160bits) ou hash() • $pwd_codif = sha1($pwd); • BASE64 • $pwd_codif = base64_encode($pwd); • $pwd = base64_decode($pwd_codif); • hash(...) e crypt(...) • permitem escolher o tipo de codificação • o crypt() permite adicionar uma string de SALT
  • 21. XSS - Cross Site Scripting Introdução de código (normalmente JS) em áreas de User Generated Content (blogues, fóruns, comments, etc.) • não é um ataque direto ao site, mas sim ao utilizador… • diferenças entre browsers! • Exemplo 1 • Input: <script language="javascript"> document.location="http:// www.ua.pt"; </script> echo $_POST['campo1']; //vai redirecionar • Exemplo 2 • Input: <script language="javascript"> document.location="http:// www.ua.pt"; </script> echo strip_tags($_POST['campo1']); //não redireciona echo htmlentities($_POST['campo1']); //não redireciona