Angular >= 2 - One Framework Mobile & DesktopGDGFoz
Vou abordar dois pontos. Um para aqueles que estão escolhendo uma plataforma de desenvolvimento e outro para aqueles que já começaram a se aventurar mas não sabem como montar o quebra-cabeça.
Usarei exemplos de código e os conceitos de programação que uso no desenvolvimento da interface do MyDevBot. - Dalton Salvatti
Guilherme Blanco, Lead Architect da Carmigo, fez a palestra "Keynote: PHP-7", no PHP Experience 2016.
O iMasters PHP Experience 2016 aconteceu nos dias 21 e 22 de Março de 2015, no Hotel Tivoli em São Paulo-SP
http://phpexperience2016.imasters.com.br/
A palestra visa: i) apresentar as principais técnicas de ataque a aplicações web, com destaque para SQL Injection, Cross-Site Scripting e demais opções de injeção de código; ii) apresentar uma classificação destas técnicas de acordo com a camada-alvo de cada uma: aplicação, apresentação, BD, etc.; iii) demonstrar que a mitigação de riscos de segurança em aplicações web exige ações em todo o ciclo de vida destes softwares - mas que a adoção de princípios seguros durante a etapa de desenvolvimento tem papel preponderante neste processo. O título faz uma referência às artes marciais mistas (MMA) justamente para reforçar a idéia de que segurança da informação exige conhecimentos amplos. Para compreender o princípio (elementar) de se evitar register_globals em PHP, é interessante que o desenvolvedor conheça o protocolo HTTP. Este conhecimento, externo à área de desenvolvimento per se, também pode ser instrumental para a compreensão de porque o uso do HTTP_REFERER, em qualquer linguagem/plataforma, pode ser muito pouco para o controle de navegação. O mesmo poderia ser dito sobre a relação entre cookies e timestamps, além do uso de hashes para codificá-los. Ou sobre a necessidade de análise e escape de caracteres, que podem sofrer múltiplos passos de codificação para permitir a injeção de código em situações em que sistemas estão protegidos por meras "receitas de bolo" de segurança. Espera-se que ao fim da palestra os desenvolvedores presentes sintam-se motivados a investigar questões de segurança que vão além do escopo de seus códigos, e diversifiquem assim suas "habilidades marciais" em tecnologia.
Angular >= 2 - One Framework Mobile & DesktopGDGFoz
Vou abordar dois pontos. Um para aqueles que estão escolhendo uma plataforma de desenvolvimento e outro para aqueles que já começaram a se aventurar mas não sabem como montar o quebra-cabeça.
Usarei exemplos de código e os conceitos de programação que uso no desenvolvimento da interface do MyDevBot. - Dalton Salvatti
Guilherme Blanco, Lead Architect da Carmigo, fez a palestra "Keynote: PHP-7", no PHP Experience 2016.
O iMasters PHP Experience 2016 aconteceu nos dias 21 e 22 de Março de 2015, no Hotel Tivoli em São Paulo-SP
http://phpexperience2016.imasters.com.br/
A palestra visa: i) apresentar as principais técnicas de ataque a aplicações web, com destaque para SQL Injection, Cross-Site Scripting e demais opções de injeção de código; ii) apresentar uma classificação destas técnicas de acordo com a camada-alvo de cada uma: aplicação, apresentação, BD, etc.; iii) demonstrar que a mitigação de riscos de segurança em aplicações web exige ações em todo o ciclo de vida destes softwares - mas que a adoção de princípios seguros durante a etapa de desenvolvimento tem papel preponderante neste processo. O título faz uma referência às artes marciais mistas (MMA) justamente para reforçar a idéia de que segurança da informação exige conhecimentos amplos. Para compreender o princípio (elementar) de se evitar register_globals em PHP, é interessante que o desenvolvedor conheça o protocolo HTTP. Este conhecimento, externo à área de desenvolvimento per se, também pode ser instrumental para a compreensão de porque o uso do HTTP_REFERER, em qualquer linguagem/plataforma, pode ser muito pouco para o controle de navegação. O mesmo poderia ser dito sobre a relação entre cookies e timestamps, além do uso de hashes para codificá-los. Ou sobre a necessidade de análise e escape de caracteres, que podem sofrer múltiplos passos de codificação para permitir a injeção de código em situações em que sistemas estão protegidos por meras "receitas de bolo" de segurança. Espera-se que ao fim da palestra os desenvolvedores presentes sintam-se motivados a investigar questões de segurança que vão além do escopo de seus códigos, e diversifiquem assim suas "habilidades marciais" em tecnologia.
PHP & Segurança: Blindando Aplicações Web - Rafael Jaques - Tchelinux Bento G...Tchelinux
O objetivo dessa palestra é apresentar algumas vulnerabilidades que são bastante comuns em aplicações PHP e qual a maneira de contorná-las. Serão mostradas técnicas de programação defensiva, resposta a incidentes, prevenção de perdas e outros tópicos relevantes à segurança da informação. Princípios de segurança, técnicas de invasão e defesa, identificação e prevenção de ataques, boas práticas e proteção do usuário fazem parte dos assuntos abordados nessa palestra.
* Link original do autor: https://speakerdeck.com/rafajaques/php-and-seguranca-blindando-aplicacoes-web
* Link do perfil do autor no Speaker Deck: https://speakerdeck.com/rafajaques
Rafael Jaques é professor do IFRS, um dos coordenadores do PHPRS, evangelista PHP e Electron, desenvolvedor há mais de 15 anos e viciado em segurança.
Lightning talk apresentada no MeetUp PHPRS subseção Canela/Gramado no dia 26/11/2016 - hotel Klein Ville de Canela (RS):
http://www.meetup.com/pt-BR/PHP-RS/events/234978772/
Última aula do curso de Python, aqui mostramos de forma superficial como fazer a integração do Django com Adobe Flex, como utilizar o módulo do PagSeguro, PyGame e como integrar sua aplicação com o Apache
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraFlávio Lisboa
Nesta palestra aprenderemos a criar uma aplicação utilizando os recursos do PHP 5.4 e os componentes do projeto Aura. A demonstração será feita ao vivo com a criação de snippets de código.
Uma curta apresentação sobre o impacto das tecnologias de Inteligência Artificial no contexto do ensino, baseanda numa analogia com o universo do Dune.
The slides have little text and it is complicated to understand the narrative. I'll give you an idea of the context of the subjects I'll be teaching and which are referred to in the slides:
BDTSS - databases and server-side technologies is an undergraduate course
Web Project is a discipline taught at the end of the first year of a master's degree
Mentoria entre pares de estudantes para estudantesCarlos Santos
Que transformações poderão acontecer quando os estudantes mentores têm a liberdade e responsabilidade de conceptualizar, preparar e realizar as sessões de mentoria para outros estudantes?
O ponto de partida para esta conversa é desafiar a refletir sobre estratégias de mentoria entre pares, que procurem explorar o potencial criativo e de inovação que existe em cada estudante. No entanto, para que esse potencial se possa revelar é indispensável que o professor tenha a capacidade de se colocar em segundo plano, apoiando e validando, mas dando espaço e liberdade para que os estudantes mentores assumam a liderança e responsabilidade pelo processo.
Nesta sessão vamos começar por partilhar uma iniciativa baseada nesta abordagem, no contexto do ensino superior (AVILA Crew), apresentando as estratégias e conteúdos utilizados em sessões de mentoria já realizadas. Partindo da inspiração do modelo anterior, vamos partilhar a sua adaptação para o modelo adotado no projeto “Aprender Mentorando”, implementado em 3 agrupamentos de escolas nacionais, procurando demonstrar a viabilidade da sua adoção em todos os ciclos de estudo.
Slides de abertura do 1º Encontro Científico TCEdu
Apresenta-se a estrutura da Unidade Curricular de Tecnologias da Comunicação em Educação do Programa Doutoral em Multimédia em Educação da Universidade de Aveiro, abordando as estratégias de inovação pedagógica que conduziram à realização do encontro científico.
Tecnologias da Comunicação em Educação 2018: Aula inicialCarlos Santos
Slides de apoio à aula inicial da UC de Tecnologias da Comunicação em Educação do Programa Doutoral em Multimédia em Educação da Universidade de Aveiro
AVILA Crew - Uma experiência de tutoria (com jogos) de alunos para alunosCarlos Santos
Apresentação de 5 minutos realizada no 4º Encontro sobre Jogos e Mobile Learning, 5 maio 2018, na Faculdade de Psicologia e Ciências da Educação da Universidade de Coimbra
AVILA Crew – Uma experiência de tutoria de alunos para alunosCarlos Santos
Resumo: A disciplina de Laboratório Multimédia 4 da Licenciatura em Novas Tecnologias da Comunicação da Universidade de Aveiro representa um obstáculo significativo para muitos alunos deste curso com um perfil menos tecnológico. Na disciplina anterior, Laboratório Multimédia 3, a maioria destes alunos encontraram pela primeira vez os desafios de uma disciplina que, genericamente, se pode descrever como “Introdução à Programação”. Dado o elevado nível de insucesso que existiu nesta disciplina no presente ano letivo, procurou-se encontrar soluções que permitissem “recuperar” a motivação dos alunos para as temáticas relacionadas com a programação e, se possível, melhorar ainda os resultados relativamente a anos anteriores.
A estratégia delineada passou pela criação de uma equipa de tutoria constituída por ex-alunos da disciplina que demonstraram um desempenho muito bom. A equipa (AVILA Crew) inclui cerca de 20 voluntários e, até ao presente momento, preparou, organizou e realizou de 3 sessões de trabalho (AVILA Sessions), de acordo com os objetivos de ensino/aprendizagem apresentados pelos docentes da disciplina. Todos os conteúdos e soluções foram previamente analisadas e discutidas entre docentes e mentores de modo a garantir a sua correção científica.
Nesta sessão pretende-se apresentar o conceito que levou à constituição da AVILA Crew e discutir as estratégias e os resultados obtidos nas AVILA Sessions. Pretende-se ainda apresentar uma reflexão sobre as dificuldades na execução de um programa deste tipo e possíveis formas de apoio institucional que tornem este tipo de iniciativa mais sustentável.
Mestrado em Comunicação Multimédia da Universidade de Aveiro - Sessão de acol...Carlos Santos
Slides da sessão de acolhimento para os novos alunos do Mestrado em Comunicação Multimédia da Universidade de Aveiro.
Mais informação em http://www.ua.pt/ensino/course/101 e http://mcmm.web.ua.pt
Tecnologias da Comunicação em Educação: trabalho práticoCarlos Santos
Desafio para trabalho prático no âmbito da disciplina de Tecnologias da Comunicação em Educação do Programa Doutoral em Multimédia em Educação - Universidade de Aveiro
LIVRO MPARADIDATICO SOBRE BULLYING PARA TRABALHAR COM ALUNOS EM SALA DE AULA OU LEITURA EXTRA CLASSE, COM FOCO NUM PROBLEMA CRUCIAL E QUE ESTÁ TÃO PRESENTE NAS ESCOLAS BRASILEIRAS. OS ALUNOS PODEM LER EM SALA DE AULA. MATERIAL EXCELENTE PARA SER ADOTADO NAS ESCOLAS
proposta curricular da educação de jovens e adultos da disciplina geografia, para os anos finais do ensino fundamental. planejamento de unidades, plano de curso da EJA- GEografia
para o professor que trabalha com a educação de jovens e adultos- anos finais do ensino fundamental.
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdfenpfilosofiaufu
Caderno de Resumos XVIII Encontro de Pesquisa em Filosofia da UFU, IX Encontro de Pós-Graduação em Filosofia da UFU e VII Encontro de Pesquisa em Filosofia no Ensino Médio
Atividades de Inglês e Espanhol para Imprimir - AlfabetinhoMateusTavares54
Quer aprender inglês e espanhol de um jeito divertido? Aqui você encontra atividades legais para imprimir e usar. É só imprimir e começar a brincar enquanto aprende!
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24, Pr Henrique, EBD NA TV, Revista ano 11, nº 1, Revista Estudo Bíblico Jovens E Adultos, Central Gospel, 2º Trimestre de 2024, Professor, Tema, Os Grandes Temas Do Fim, Comentarista, Pr. Joá Caitano, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
proposta curricular para educação de jovens e adultos- Língua portuguesa- anos finais do ensino fundamental (6º ao 9º ano). Planejamento de unidades letivas para professores da EJA da disciplina língua portuguesa- pode ser trabalhado nos dois segmentos - proposta para trabalhar com alunos da EJA com a disciplina língua portuguesa.Sugestão de proposta curricular da disciplina português para turmas de educação de jovens e adultos - ensino fundamental. A proposta curricular da EJa lingua portuguesa traz sugestões para professores dos anos finais (6º ao 9º ano), sabendo que essa modalidade deve ser trabalhada com metodologias diversificadas para que o aluno não desista de estudar.
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