SlideShare a Scribd company logo
1 of 21
Download to read 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

More Related Content

What's hot

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
 

What's hot (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
 

Similar to 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
 

Similar to 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
 

More from 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
 

More from 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)
 

Recently uploaded

Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAHELENO FAVACHO
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfHELENO FAVACHO
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfRavenaSales1
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxTailsonSantos1
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfLuizaAbaAba
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxLuizHenriquedeAlmeid6
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfHELENO FAVACHO
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMHELENO FAVACHO
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdfLeloIurk1
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfmaurocesarpaesalmeid
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecniCleidianeCarvalhoPer
 

Recently uploaded (20)

Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdf
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 

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