SlideShare uma empresa Scribd logo
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 seguros
Douglas V. Pasqua
 
Rest Beer v2
Rest Beer v2Rest Beer v2
Rest Beer v2
Ivan Rosolen
 
Web App Flaws - SQL Injection
Web App Flaws - SQL InjectionWeb App Flaws - SQL Injection
Web App Flaws - SQL Injection
David Gomes Guimarães
 
Segurança Web com PHP5
Segurança Web com PHP5Segurança Web com PHP5
Segurança Web com PHP5
Douglas V. Pasqua
 
Otimização e Escalabilidade
Otimização e EscalabilidadeOtimização e Escalabilidade
Otimização e Escalabilidademetzen
 
Pg2
Pg2Pg2
Pg2
csmp
 
Angular >= 2 - One Framework Mobile & Desktop
Angular >= 2 - One Framework Mobile & DesktopAngular >= 2 - One Framework Mobile & Desktop
Angular >= 2 - One Framework Mobile & Desktop
GDGFoz
 
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 2004
Michel Alves
 
Desenvolvendo Extensões PECL
Desenvolvendo Extensões PECLDesenvolvendo Extensões PECL
Desenvolvendo Extensões PECL
W3P 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-7
iMasters
 
Owasp web app_flaws
Owasp web app_flawsOwasp web app_flaws
Owasp web app_flaws
David Gomes Guimarães
 
Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7
Sé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 II
info_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 II
info_cimol
 
Privilégios de processos no OpenSolaris
Privilégios de processos no OpenSolarisPrivilégios de processos no OpenSolaris
Privilégios de processos no OpenSolaris
Rafael Barbolo
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
Bruno Cunha
 

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

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
Carlos Nilton Araújo Corrêa
 
Doctrine for dummies
Doctrine for dummiesDoctrine for dummies
Doctrine for dummies
Ari Stopassola Junior
 
Hello SAFE World!!!
Hello SAFE World!!!Hello SAFE World!!!
Hello SAFE World!!!
Everaldo Wanderlei Uavniczak
 
LabMM4 (T16 - 12/13) - PHP + MySQL
LabMM4 (T16 - 12/13) - PHP + MySQLLabMM4 (T16 - 12/13) - PHP + MySQL
LabMM4 (T16 - 12/13) - PHP + MySQLCarlos Santos
 
Web app flaws
Web app flawsWeb app flaws
Web app flaws
David Guimarães
 
Aula 01 PHP+MySQL - LabMM4
Aula 01 PHP+MySQL - LabMM4Aula 01 PHP+MySQL - LabMM4
Aula 01 PHP+MySQL - LabMM4Carlos Santos
 
Php FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHPPhp FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHP
Marcio Albuquerque
 
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
 
PHP FrameWARks - FISL
PHP FrameWARks - FISLPHP FrameWARks - FISL
PHP FrameWARks - FISL
Marcio Albuquerque
 
Doctrine for Dummies
Doctrine for DummiesDoctrine for Dummies
Doctrine for Dummies
Ari Stopassola Junior
 
Dev Ext PHP
Dev Ext PHPDev Ext PHP
Dev Ext PHP
Andre Golvea
 
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 - FLISOL
grupoweblovers
 
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
pericles_junior
 
Python 08
Python 08Python 08
Python 08
Bruno Catão
 
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
Flá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 pdo
Jorge 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 estudantes
Carlos Santos
 
1º Encontro Científico TCEdu
1º Encontro Científico TCEdu1º Encontro Científico TCEdu
1º Encontro Científico TCEdu
Carlos 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 inicial
Carlos 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 alunos
Carlos 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 alunos
Carlos Santos
 
chmod 777 education
chmod 777 educationchmod 777 education
chmod 777 education
Carlos 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ático
Carlos 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
 
chmod 777 education
chmod 777 educationchmod 777 education
chmod 777 education
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 Environment
Carlos 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 Campus
Carlos 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 project
Carlos 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 DeCA
Carlos 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

educação inclusiva na atualidade como ela se estabelece atualmente
educação inclusiva na atualidade como ela se estabelece atualmenteeducação inclusiva na atualidade como ela se estabelece atualmente
educação inclusiva na atualidade como ela se estabelece atualmente
DeuzinhaAzevedo
 
BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...
BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...
BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...
Escola Municipal Jesus Cristo
 
Caderno de Formação_PORTUGUÊS ESTRAN.pdf
Caderno de Formação_PORTUGUÊS ESTRAN.pdfCaderno de Formação_PORTUGUÊS ESTRAN.pdf
Caderno de Formação_PORTUGUÊS ESTRAN.pdf
carlaslr1
 
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptxMÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
Martin M Flynn
 
ptoposta curricular de geografia.da educação de jovens a e adultos
ptoposta curricular de geografia.da educação de jovens a e adultosptoposta curricular de geografia.da educação de jovens a e adultos
ptoposta curricular de geografia.da educação de jovens a e adultos
Escola Municipal Jesus Cristo
 
UFCD_8298_Cozinha criativa_índice do manual
UFCD_8298_Cozinha criativa_índice do manualUFCD_8298_Cozinha criativa_índice do manual
UFCD_8298_Cozinha criativa_índice do manual
Manuais Formação
 
Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...
Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...
Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...
Luana Neres
 
Hidráulica Industrial, conceito e definição
Hidráulica Industrial, conceito e definiçãoHidráulica Industrial, conceito e definição
Hidráulica Industrial, conceito e definição
lucasbalacostaalves1
 
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
PROPOSTA CURRICULAR  EDUCACAO FISICA.docxPROPOSTA CURRICULAR  EDUCACAO FISICA.docx
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
Escola Municipal Jesus Cristo
 
05-os-pre-socraticos sociologia-28-slides.pptx
05-os-pre-socraticos sociologia-28-slides.pptx05-os-pre-socraticos sociologia-28-slides.pptx
05-os-pre-socraticos sociologia-28-slides.pptx
ValdineyRodriguesBez1
 
os-lusiadas-resumo-os-lusiadas-10-ano.pdf
os-lusiadas-resumo-os-lusiadas-10-ano.pdfos-lusiadas-resumo-os-lusiadas-10-ano.pdf
os-lusiadas-resumo-os-lusiadas-10-ano.pdf
GiselaAlves15
 
.Template .padrao .slides .TCC .2024 ppt
.Template .padrao .slides .TCC .2024 ppt.Template .padrao .slides .TCC .2024 ppt
.Template .padrao .slides .TCC .2024 ppt
IslanderAndrade
 
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdfCaderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
enpfilosofiaufu
 
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptxLIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
WelidaFreitas1
 
HISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptx
HISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptxHISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptx
HISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptx
WALTERDECARVALHOBRAG
 
Unificação da Itália e a formação da Alemanha
Unificação da Itália e a formação da AlemanhaUnificação da Itália e a formação da Alemanha
Unificação da Itália e a formação da Alemanha
Acrópole - História & Educação
 
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - AlfabetinhoAtividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
MateusTavares54
 
Aula 3- 6º HIS - As origens da humanidade, seus deslocamentos e os processos ...
Aula 3- 6º HIS - As origens da humanidade, seus deslocamentos e os processos ...Aula 3- 6º HIS - As origens da humanidade, seus deslocamentos e os processos ...
Aula 3- 6º HIS - As origens da humanidade, seus deslocamentos e os processos ...
Luana Neres
 
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptx
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptxSlides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptx
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptx
LuizHenriquedeAlmeid6
 
proposta curricular ou plano de cursode lingua portuguesa eja anos finais ( ...
proposta curricular  ou plano de cursode lingua portuguesa eja anos finais ( ...proposta curricular  ou plano de cursode lingua portuguesa eja anos finais ( ...
proposta curricular ou plano de cursode lingua portuguesa eja anos finais ( ...
Escola Municipal Jesus Cristo
 

Último (20)

educação inclusiva na atualidade como ela se estabelece atualmente
educação inclusiva na atualidade como ela se estabelece atualmenteeducação inclusiva na atualidade como ela se estabelece atualmente
educação inclusiva na atualidade como ela se estabelece atualmente
 
BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...
BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...
BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...
 
Caderno de Formação_PORTUGUÊS ESTRAN.pdf
Caderno de Formação_PORTUGUÊS ESTRAN.pdfCaderno de Formação_PORTUGUÊS ESTRAN.pdf
Caderno de Formação_PORTUGUÊS ESTRAN.pdf
 
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptxMÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
 
ptoposta curricular de geografia.da educação de jovens a e adultos
ptoposta curricular de geografia.da educação de jovens a e adultosptoposta curricular de geografia.da educação de jovens a e adultos
ptoposta curricular de geografia.da educação de jovens a e adultos
 
UFCD_8298_Cozinha criativa_índice do manual
UFCD_8298_Cozinha criativa_índice do manualUFCD_8298_Cozinha criativa_índice do manual
UFCD_8298_Cozinha criativa_índice do manual
 
Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...
Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...
Aula 2 - 6º HIS - Formas de registro da história e da produção do conheciment...
 
Hidráulica Industrial, conceito e definição
Hidráulica Industrial, conceito e definiçãoHidráulica Industrial, conceito e definição
Hidráulica Industrial, conceito e definição
 
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
PROPOSTA CURRICULAR  EDUCACAO FISICA.docxPROPOSTA CURRICULAR  EDUCACAO FISICA.docx
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
 
05-os-pre-socraticos sociologia-28-slides.pptx
05-os-pre-socraticos sociologia-28-slides.pptx05-os-pre-socraticos sociologia-28-slides.pptx
05-os-pre-socraticos sociologia-28-slides.pptx
 
os-lusiadas-resumo-os-lusiadas-10-ano.pdf
os-lusiadas-resumo-os-lusiadas-10-ano.pdfos-lusiadas-resumo-os-lusiadas-10-ano.pdf
os-lusiadas-resumo-os-lusiadas-10-ano.pdf
 
.Template .padrao .slides .TCC .2024 ppt
.Template .padrao .slides .TCC .2024 ppt.Template .padrao .slides .TCC .2024 ppt
.Template .padrao .slides .TCC .2024 ppt
 
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdfCaderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
 
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptxLIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
 
HISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptx
HISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptxHISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptx
HISTÓRIA DO CEARÁ MOVIMENTOS REVOLUCIONARIOS NO CEARÁ.pptx
 
Unificação da Itália e a formação da Alemanha
Unificação da Itália e a formação da AlemanhaUnificação da Itália e a formação da Alemanha
Unificação da Itália e a formação da Alemanha
 
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - AlfabetinhoAtividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
 
Aula 3- 6º HIS - As origens da humanidade, seus deslocamentos e os processos ...
Aula 3- 6º HIS - As origens da humanidade, seus deslocamentos e os processos ...Aula 3- 6º HIS - As origens da humanidade, seus deslocamentos e os processos ...
Aula 3- 6º HIS - As origens da humanidade, seus deslocamentos e os processos ...
 
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptx
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptxSlides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptx
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptx
 
proposta curricular ou plano de cursode lingua portuguesa eja anos finais ( ...
proposta curricular  ou plano de cursode lingua portuguesa eja anos finais ( ...proposta curricular  ou plano de cursode lingua portuguesa eja anos finais ( ...
proposta curricular ou plano de cursode lingua portuguesa eja anos finais ( ...
 

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