Programação para Web II – Aula 1
Introdução
O estudo da Programação para Web II aborda de forma integrada o desenvolvimento de software no lado do cliente (client-side) e do servidor (server-side), com ênfase na construção de aplicações robustas, escaláveis e seguras. A evolução das tecnologias web exige que os desenvolvedores dominem não apenas a criação de rotas e integração com bancos de dados, mas também compreendam profundamente a infraestrutura de redes (servidores web, resolução de nomes DNS, anatomia das requisições HTTP) e a implementação contínua de medidas de segurança em todas as etapas do ciclo de vida do software.
Resumo do Conteúdo
1. Segurança no Desenvolvimento de Software
A segurança deve ser tratada como um requisito fundamental desde o planejamento do código. As práticas e recomendações seguem os padrões globais da Fundação OWASP (Open Web Application Security Project) e as diretrizes nacionais do CGI.br (Comitê Gestor da Internet no Brasil).
- Tratamento de Senhas: Armazenar senhas em texto puro é uma vulnerabilidade grave. Utiliza-se a biblioteca
hashlibem Python para aplicar funções de hash criptográfico seguros (como SHA-256 e SHA-512) juntamente com técnicas de salting (adição de caracteres) para prevenir ataques de força bruta e dicionário. - Mitigação de Vulnerabilidades: Realização de análises estáticas e dinâmicas, testes de injeção de SQL (SQL Injection), revisão de código e implementação do modelo de menor privilégio.
- Mecanismos de Autenticação: Adoção de Single Sign-On (SSO), restrição de tentativas por rate-limiting, uso de CAPTCHA contra automações e implementação de Autenticação de Dois Fatores (2FA/MFA).
2. Arquitetura Web e Infraestrutura
- Modelo Cliente-Servidor: O cliente (navegador/dispositivo) realiza requisições ao servidor (host ou lâmina), que processa e devolve a resposta contendo a aplicação ou dados solicitados.
- Servidor Apache &
mod_wsgi: Utilização do servidor web Apache configurado com o módulomod_wsgipara interpretar e intermediar as requisições direcionadas a frameworks web baseados em Python, como o Flask. - Resolução de Nomes (DNS): Tradução hierárquica entre nomes de domínio amigáveis (ex.:
google.com.br) e endereços IP numéricos, utilizando servidores como BIND (Linux) ou IIS/DNS (Windows). - Anatomia da URL: Estruturação composta por Esquema/Protocolo (
https://), Domínio/Host, Porta (:8080), Caminho (Path), Query String (?param=valor) e Âncora/Fragmento (#secao).
3. Protocolos e Conexões Seguras
- HTTP vs. HTTPS: Diferenciação entre o tráfego inseguro em texto claro (HTTP) e o tráfego criptografado (HTTPS) via camadas de transporte seguro SSL/TLS.
- Certificados Digitais: Validação de identidade emitida por Autoridades Certificadoras (AC) confiáveis, conferindo confidencialidade, integridade e não repúdio às transações digitais.
Programação para Web II – Aula 1
Informações e Contexto
- Curso: Programação para Web 2
- Docente:
- Prof. Cleiton da Silva Borges: Graduado em Processamento de Dados, especialista em Redes de Computadores e pós-graduando em Engenharia de Software. Possui 5 anos de experiência no ensino de informática e 14 anos de atuação no setor privado de Tecnologia da Informação e Comunicação (TIC).
Conteúdo e Ementa da Disciplina
- Conceitos fundamentais de Segurança da Informação e de Aplicações Web.
- Técnicas e aplicações avançadas em programação web e desenvolvimento em camadas.
- Arquitetura Orientada a Serviços (SOA) e construção de Web Services.
- Utilização de bibliotecas e ferramentas avançadas (como Python e Flask).
Objetivos da Aula
- Geral: Conhecer e aplicar princípios de tecnologia avançada de programação no desenvolvimento de sistemas web, integrando políticas de segurança na construção de um Web Service.
- Específicos:
- Compreender a importância da segurança no desenvolvimento de software.
- Conhecer a fundação OWASP (Open Web Application Security Project) e o comitê diretivo do setor.
- Identificar e mitigar códigos e sistemas vulneráveis.
- Implementar scripts e rotinas em Python/Flask para ambiente servidor (Web/HTTP).
A Importância da Segurança no Desenvolvimento de Software
- Segurança como requisito essencial: A segurança não é um elemento opcional, mas uma exigência contínua na construção de qualquer aplicação.
- Vulnerabilidades e riscos de mercado:
- Exemplo prático (Facebook / Mark Zuckerberg): O histórico de falhas reportadas no Facebook demonstra que mesmo grandes corporações com amplas equipes de TI enfrentam desafios de segurança e invasões.
- Impactos operacionais e institucionais: Invasões e falhas na exposição de dados causam perda de credibilidade, prejuízos financeiros e danos à reputação da organização e da equipe técnica.
- Visão Sistêmica de Segurança: A segurança cibernética não depende apenas do código. Ela abrange a infraestrutura de servidores, políticas de gerenciamento de TI, atualização constante de dependências/plugins e fatores humanos (como a prevenção contra engenharia social).
Introdução à Fundação OWASP
- Definição: A OWASP (Open Web Application Security Project) é uma organização internacional sem fins lucrativos focada na melhoria da segurança de softwares e aplicações web.
- Recursos Disponíveis: Oferece materiais gratuitos, diretrizes de boas práticas, fóruns de discussão e documentações abertas para a comunidade de desenvolvedores.
- Pilares de Atuação: Defende a segurança tratada a partir de três eixos: Pessoas, Processos e Tecnologias.
Identificação e Tratamento de Vulnerabilidades
- Identificação de Falhas: Recomenda-se realizar análises periódicas de código, testes de penetração e auditorias cruzadas (onde outro profissional revisa o código para evitar o viés do próprio desenvolvedor).
- Ações Corretivas:
- Identificar os pontos fracos da aplicação.
- Planejar as melhorias técnicas necessárias.
- Investir na capacitação e na conscientização de programadores e gestores de TI quanto às boas práticas de segurança.
Resumo Executivo
A aula inaugural da disciplina de Programação para Web 2, ministrada pelo professor Cleiton da Silva Borges, aborda a importância da Segurança da Informação no desenvolvimento de aplicações web. O conteúdo destaca que a segurança deve ser tratada como um requisito fundamental desde o início do projeto, e não apenas no produto final. A partir de exemplos de falhas e invasões registradas em grandes plataformas (como o Facebook), ressalta-se que a proteção de dados envolve tanto o código-fonte quanto a infraestrutura e os processos organizacionais. Por fim, apresenta-se a OWASP como a principal comunidade internacional de apoio para o diagnóstico, prevenção e correção de vulnerabilidades em softwares.
Programação para Web II – Aula 2
Programação para Web II – Aula 2
Organização e Estruturação do Conteúdo
Informações e Contexto
- Curso: Programação para Web 2 (Teleaula nº 2)
- Docente: Prof. Cleiton da Silva Borges
Conteúdo da Aula
- Princípios de segurança em desenvolvimento de software (ameaças, vulnerabilidades e contramedidas).
- Principais causas de falhas de segurança em aplicativos web.
- Ferramentas de testes e simulação da fundação OWASP (OWASP Top 10, WebGoat, ZAP).
- Propriedades inerentes ao software que impactam a segurança: Complexidade, Conformidade, Mutabilidade e Invisibilidade.
- Princípios práticos de segurança (Mínimo Privilégio, Defesa em Profundidade, Simplicidade das Estratégias).
Objetivos da Teleaula
- Compreender os conceitos de ameaça, vulnerabilidade e contramedida.
- Identificar as causas raízes de falhas de segurança em aplicações.
- Conhecer e utilizar recursos da fundação OWASP para testes automatizados e estudos de caso reais.
- Analisar como as características intrínsecas do software geram desafios de gestão e segurança.
Conceitos Fundamentais de Segurança
- Ameaça: Potencial causa de um incidente indesejado que pode resultar em danos ao sistema.
- Vulnerabilidade: Fraqueza ou brecha no software, na infraestrutura ou nos processos que pode ser explorada por uma ameaça.
- Contramedida: Ação, controle ou técnica implementada para eliminar ou reduzir os riscos resultantes de uma vulnerabilidade.
Ferramentas e Recursos Recomendados (OWASP)
- OWASP Top 10: Documento de conscientização que descreve as 10 vulnerabilidades mais críticas em aplicações web e como preveni-las.
- WebGoat: Ambiente didático de treinamento completo contendo vulnerabilidades reais para aprendizado prático de desenvolvedores.
- OWASP ZAP (Zed Attack Proxy): Ferramenta aberta utilizada para realização de testes de penetração (pentests) e identificação de falhas em aplicações.
Causas Raízes das Vulnerabilidades
As falhas de segurança geralmente se originam de problemas estruturais ou operacionais na organização, tais como:
- Falta de Gestão e Processos: Ausência de modelos de risco adequados no ciclo de desenvolvimento.
- Falta de Capacitação: Desenvolvedores e equipes técnicas sem treinamento contínuo em práticas de código seguro.
- Ferramental Inadequado: Uso de IDEs ou plataformas sem os recursos necessários para análise estática e dinâmica de código.
As Quatro Propriedades Inerentes do Software (Segundo Frederick Brooks)
A complexidade e a dificuldade de garantir a segurança no desenvolvimento decorrem de quatro fatores principais:
- Complexidade: Softwares contêm número elevado de estados e interações não repetitivas. O aumento da complexidade compromete a comunicação da equipe e dificulta a previsão de comportamentos do sistema.
- Conformidade: O software deve se adaptar constantemente a regras humanas, interfaces de terceiros e exigências de clientes ou de legislação (ex.: mudanças fiscais).
- Mutabilidade: Por ser um produto conceitual e maleável, o software sofre pressão constante por alterações e atualizações ao longo de seu ciclo de vida.
- Invisibilidade: O software não possui representação geométrica ou espacial física no meio geográfico. Isso dificulta a visualização de sua estrutura completa e o controle conceitual por parte dos desenvolvedores e gestores.
Princípios Básicos de Segurança de Aplicações
- Mínimo Privilégio: Conceder ao usuário ou módulo do sistema apenas os acessos estritamente necessários para a execução de sua função (ex.: restrição de acessos administrativos).
- Defesa em Profundidade: Aplicar múltiplas camadas de proteção ao longo da aplicação e da infraestrutura.
- Estratégias Simples: Manter as políticas de segurança e a arquitetura do sistema o mais diretas e compreensíveis possível.
- Não Confiar Cativamente na Infraestrutura: Garantir a proteção no nível do software, sem presumir que a segurança física ou de rede seja infalível.
Resumo Executivo
A segunda teleaula da disciplina de Programação para Web 2 abordou a análise de ameaças, vulnerabilidades e contramedidas no desenvolvimento de softwares. A apresentação enfatizou que falhas de segurança resultam frequentemente de problemas organizacionais, como falta de treinamento das equipes, ausência de modelos de risco e gestão inadequada dos processos de desenvolvimento.
Para mitigar esses problemas, recomendou-se a utilização das ferramentas e diretrizes da fundação OWASP, como o relatório OWASP Top 10, o ambiente de testes WebGoat e o scanner OWASP ZAP. Com base nos conceitos de Frederick Brooks, a aula detalhou as quatro características intrínsecas que dificultam a construção de softwares seguros: Complexidade, Conformidade, Mutabilidade e Invisibilidade. Por fim, destacou-se o princípio do Mínimo Privilégio e a necessidade de manter estratégias de segurança simples e contínuas em todos os níveis da organização.
Programação para Web II – Aula 3
Programação para Web II – Aula 3
Organizado e Estruturado
Introdução e Contextualização
- Sessão: Teleaula nº 3 de Educação a Distância (EaD).
- Apresentador: Professor Cleiton.
- Redes de Interação: Convite à participação dos alunos no chat e resolução de exercícios ao final do encontro.
Revisão da Aula Anterior
- Conceitos Fundamentais: Ameaças, vulnerabilidades e contra-medidas em segurança da informação.
- Causas de Vulnerabilidades: Falhas de segurança no desenvolvimento e na arquitetura de aplicações.
- Desenvolvimento Seguro:
- Automatização de testes de vulnerabilidade em aplicações web (OWASP ZAP e Python).
- Análise de código: Análise Estática (SAST) e Análise Dinâmica (DAST).
- Prevenção e Controle de Acesso: Uso de tokens, processos de autenticação e autorização.
Tópicos da Aula Atual
1. Comitê Gestor da Internet no Brasil (CGI.br)
- Atribuição: Órgão responsável por estabelecer diretrizes estratégicas para o uso, regulação e desenvolvimento da Internet no Brasil (participou da elaboração do Marco Civil da Internet).
- Gestão de Infraestrutura e Recursos:
- Regulação do registro de domínios nacionais (extensão
.brpor meio doregistro.br). - Alocação e distribuição de blocos de endereços IP (IPv4 e a transição para IPv6) para operadoras e instituições por meio do
NIC.br.
- Regulação do registro de domínios nacionais (extensão
- Capacitação e Inovação:
- Linhas de pesquisa em segurança da informação.
- Oferta de conteúdos informativos, cartilhas (como a Cartilha de Segurança para Internet) e cursos técnicos de capacitação em infraestrutura.
2. Pilares Fundamentais da Segurança da Informação (Triade CIA / CID)
- Confidencialidade: Garantia de que a informação seja acessível apenas por pessoas autorizadas.
- Integridade: Garantia de que a informação não seja alterada ou adulterada durante o trânsito ou armazenamento.
- Disponibilidade: Garantia de que o sistema e os dados estejam acessíveis sempre que necessários.
3. Amenidades, Golpes e Engenharia Social na Internet
- Ameaça ao Usuário (Engenharia Social): Devido à alta segurança física e lógica dos servidores bancários, atacantes focam na manipulação comportamental dos usuários (indução ao erro, coleta de dados pessoais, criação de dicionários de dados para ataques de força bruta).
- Principais Golpes:
- Furtos de identidade e clonagem de dados.
- Fraudes financeiras e antecipação de recursos.
- Spam, phishing e páginas falsas.
- Golpes em e-commerce e compras coletivas.
- Prevenção: Notificação às instituições financeiras/operadoras, comunicação ao
CERT.bre autoridades policiais.
4. Ataques na Internet: Motivações e Técnicas
- Motivações dos Atacantes:
- Demonstração de poder e prestígio: Invasão para ganho de status no meio hacker.
- Motivação Financeira: Uso de Ransomware (criptografia de dados com pedido de resgate) ou extorsão.
- Motivação Ideológica ou Comercial: Ataques de Negação de Serviço (DoS/DDoS) para tirar páginas concorrentes ou de opiniões contrárias do ar (defacement ou indisponibilidade).
- Técnicas Comuns:
- Exploração de vulnerabilidades conhecidas.
- Varreduras de rede (port scanning / scans).
- Falsificação de e-mails (spoofing).
Resumo Executivo
A teleaula aborda a segurança em aplicações web e a governança da internet no Brasil, destacando a atuação do CGI.br na definição de diretrizes estratégicas, gestão de domínios (.br) e alocação de endereços IP (IPv4/IPv6).
São apresentados os três pilares da Segurança da Informação (Confidencialidade, Integridade e Disponibilidade — Triade CID/CIA) e analisado como a Engenharia Social explora a fragilidade humana para obter senhas e dados confidenciais diante da complexidade de invadir servidores protegidos. Por fim, o texto categoriza os principais ataques virtuais (como Ransomware, varreduras de rede e ataques de negação de serviço), suas motivações (financeiras, ideológicas ou comerciais) e enfatiza a importância das medidas preventivas e da notificação de incidentes a órgãos como o CERT.br.
Programação para Web II – Aula 4
Programação para Web II – Aula 4
Organizado e Estruturado
1. Contextualização e Revisão da Aula Anterior
- Programa: Teleaula nº 4 de Educação a Distância (EaD).
- Apresentador: Professor Cleiton Borges.
- Revisão da Aula Anterior:
- Segurança em aplicações web.
- Comitê Gestor da Internet no Brasil (CGI.br).
- Conceitos básicos de segurança da informação e na internet.
- Identificação de golpes e ataques comuns na rede.
2. Requisitos Básicos de Segurança da Informação
Ações do dia a dia (como apresentar documentos, confirmar presença no banco ou reconhecer firma em cartório) possuem equivalentes digitais para garantir a veracidade das informações na rede.
- Identificação: Permite que uma entidade declare quem ela é (ex.: informar o nome de usuário ou apresentar um documento).
- Autenticação: Verifica se a entidade é realmente quem alega ser (ex.: verificação de senha, biometria ou perguntas de segurança baseadas em dados cadastrais).
- Autorização: Determina quais ações e recursos uma entidade autenticada tem permissão para acessar (ex.: restrição de perfil de usuário vs. administrador/root).
- Integridade: Garante que a informação não seja alterada sem autorização durante o armazenamento ou trânsito.
- Confiabilidade (Sigilo/Confidencialidade): Protege o acesso aos dados contra visualizações não autorizadas.
- Não Repúdio: Impede que uma entidade negue a autoria de uma ação realizada e registrada no sistema.
- Disponibilidade: Assegura que o sistema ou serviço permaneça acessível sempre que necessário.
3. Mecanismos de Proteção e Alertas de Segurança
- Falso Positivo: Ocorre quando um mecanismo de segurança rotula erroneamente uma atividade ou arquivo legítimo como malicioso (ex.: alarmes falsos em antivírus, bloqueios indevidos em firewalls ou e-mails válidos retidos na caixa de spam).
- Políticas de Segurança: Conjunto de regras administrativas que definem os direitos, deveres e penalidades no uso de recursos computacionais:
- Política de Senhas: Define tamanho mínimo, complexidade de caracteres e periodicidade de troca.
- Política de Backup: Define a frequência das cópias de segurança, mídias utilizadas (fita, nuvem, storage) e tempo de retenção.
- Política de Uso Aceitável (Termo de Uso/Serviço): Estabelece proibições contra práticas abusivas, como compartilhamento de senhas, vazamento de dados, propagação de boatos (spams), violação de direitos autorais e ataques a outros sistemas.
- Notificação de Incidentes: Importância do registro de tentativas de acesso não autorizado e de interrupções de serviço.
4. Ferramentas Técnicas e Práticas Práticas de Segurança
- Criptografia: Codificação de dados e senhas em caracteres ilegíveis para impedir o acesso indevido por terceiros.
- Exemplo Técnico: Uso de bibliotecas em Python (como
hashlib) para gerar hashes de senhas.
- Exemplo Técnico: Uso de bibliotecas em Python (como
- Cópias de Segurança (Backup): Necessidade de execução e de testes periódicos de restauração para garantir a recuperação de dados em caso de falhas no sistema.
- Manutenção do Ambiente: Atualização constante de navegadores, leitores de e-mail e utilização de softwares como firewalls, antivírus e filtros anti-spam.
- Conexões Web:
- HTTP: Protocolo básico em que os dados trafegam em texto claro (sem criptografia), sendo considerado inseguro para informações sigilosas.
- HTTPS: Protocolo seguro que utiliza criptografia e certificados digitais (SSL/TLS) para proteger a integridade e a privacidade da comunicação.
Resumo Executivo
A quarta teleaula de Educação a Distância foca na aplicação prática de mecanismos de segurança no ambiente digital. O professor Cleiton Borges estabelece um paralelo entre as formas tradicionais de validação de identidade física (como checagem de documentos e autenticações cartoriais) e os pilares de segurança na internet: identificação, autenticação, autorização, integridade, confidencialidade, não repúdio e disponibilidade.
A aula detalha a importância das políticas de segurança corporativas (abrangendo regras para senhas, realização de backups e termos de uso aceitável) para prevenir o uso inadequado de recursos computacionais. Do ponto de vista técnico, enfatiza-se a diferenciação entre os protocolos HTTP (sem criptografia) e HTTPS (com criptografia SSL/TLS), a necessidade de atualizar softwares rotineiramente para mitigar vulnerabilidades e o conceito de falso positivo, demonstrando como ferramentas de proteção podem eventualmente gerar alertas sobre atividades legítimas.
Programação para Web II – Aula 5
Programação para Web II – Aula 5
Aqui está o conteúdo da aula totalmente organizado, estruturado e resumido, facilitando a leitura e o estudo dos conceitos apresentados sobre desenvolvimento web com Python e redes.
Texto Organizado e Estruturado
1. Contextualização e Revisão
- Programa: Teleaula nº 5 de Educação a Distância (EaD).
- Apresentador: Professor Cleiton Borges.
- Revisão da Aula Anterior (Aula 4):
- Segurança em aplicações web, mecanismo e políticas de segurança.
- Notificação de incidentes e abusos.
- Criptografia, backups, ferramentas antimalware, firewall pessoal e filtros anti-spam.
- Segurança em conexões web, certificados digitais e segurança em dispositivos móveis.
2. Criptografia de Senhas no Lado do Cliente / Aplicação
- Importância do Hashing de Senhas:
- Proteger os dados dos usuários em caso de vazamentos ou acesso não autorizado ao banco de dados.
- Senhas nunca devem ser salvas em texto simples (plain text).
- Ao autenticar, o sistema gera o hash da senha digitada e o compara com o hash armazenado no banco de dados.
- Técnicas e Bibliotecas em Python (
hashlib):- MD5: Algoritmo de hash básico (usado como exemplo inicial).
- Salting (Salt / Tempero): Técnica de adicionar caracteres aleatórios ou pré-definidos à senha antes de gerar o hash, evitando ataques por tabelas de busca (rainbow tables).
- SHA-256 e SHA-512: Algoritmos de criptografia de hash mais robustos e seguros contra quebras por força bruta.
- Validação de Regras de Senha:
- Validação de tamanho mínimo e máximo usando funções de contagem de caracteres (ex.:
len()em Python) para aceitar apenas senhas dentro dos padrões de segurança do projeto.
- Validação de tamanho mínimo e máximo usando funções de contagem de caracteres (ex.:
3. Arquitetura Cliente-Servidor e Conceitos de Redes
- Modelo Cliente-Servidor (Client-Server):
- Estrutura distribuída onde o Cliente (navegador, celular, computador) envia requisições e o Servidor (host ou lâmina) processa e responde com o recurso solicitado.
- Servidor Web Apache e Módulo WSGI:
- Apache HTTP Server: Servidor web de código aberto, livre e amplamente utilizado.
- mod_wsgi: Módulo do Apache que permite a interface entre o servidor web e aplicações desenvolvidas em Python (como o framework Flask).
- Estrutura de uma URL (Uniform Resource Locator): A URL é dividida em blocos com funções específicas:
- Esquema (Protocolo): Define a forma de comunicação (ex.:
http://,https://,ftp://). - Domínio / Host: Endereço da máquina ou servidor na rede (ex.:
cursos.ead.ifro.edu.broulocalhost). - Porta: Ponto lógico de conexão com o serviço (ex.:
:80,:8080,:5000). - Caminho (Path): Diretório ou rota interna dos arquivos/recursos dentro do servidor.
- Query String: Parâmetros enviados na URL através de requisições GET (ex.:
?nome=cleiton&id=123). - Fragmento (Âncora): Aponta para uma posição específica dentro de uma página (ex.:
#topo).
- Esquema (Protocolo): Define a forma de comunicação (ex.:
- DNS (Domain Name System):
- Sistema responsável por traduzir nomes de domínio amigáveis (ex.:
google.com.br) em endereços IP numéricos (ex.:142.250.190.46) e vice-versa. - Exemplos de Servidores DNS: BIND (comum em sistemas Linux) e DNS Server/IIS (em ambientes Microsoft Windows).
- Sistema responsável por traduzir nomes de domínio amigáveis (ex.:
4. Ambientes de Desenvolvimento Web
- Flask com Python: Framework micro e flexível para criação de aplicações e serviços web.
- Configuração no Windows:
- Instalação do Python e gerenciador de pacotes
pip. - Criação de ambientes virtuais (
virtualenv) para isolar as dependências do projeto. - Utilização de pacotes de servidor como WampServer ou o próprio Apache para hospedar aplicações no ambiente Windows.
- Instalação do Python e gerenciador de pacotes
Resumo Executivo
A quinta teleaula de Educação a Distância apresenta conceitos intermediários e avançados de programação e infraestrutura web. Apresentada pelos professor Cleiton Borges, a aula destaca primordialmente a criptografia de senhas em aplicações Python utilizando a biblioteca hashlib, enfatizando o uso de funções de hash (como SHA-256 e SHA-512) e a inclusão de salt para garantir que dados confidenciais fiquem protegidos caso o banco de dados seja comprometido.
Além do aspecto do código, a aula detalha a arquitetura cliente-servidor, explicando o papel do servidor web Apache integrado ao módulo mod_wsgi para execução de rotas Python/Flask. Por fim, são desmembradas a anatomia completa de uma URL (protocolo, domínio, porta, caminho, query string e âncora) e a função essencial do servidor DNS na resolução de nomes de domínio em endereços IP.
Programação para Web II – Aula 6
Programação para Web II – Aula 6
Organizado e Estruturado
1. Contextualização e Visão Geral
- Programa: Teleaula nº 6 de Educação a Distância (EaD) — Grande Revisão Final para Avaliação.
- Apresentador: Professor Cleiton Borges.
- Revisão da Aula Anterior (Aula 5):
- Técnicas e aplicativos avançados em programação web.
- Arquitetura Orientada a Serviços e Web Servers (Apache HTTP Server, módulo
mod_wsgipara Python). - Estrutura de URLs (Uniform Resource Locator) e Sistema de Nomes de Domínio (DNS).
- Configuração de servidor web com Python e Flask.
2. Segurança no Desenvolvimento de Software e a Fundacão OWASP
- Segurança como Requisito: A segurança não é um extra, mas um requisito essencial durante todas as fases de construção de um software.
- Fundação OWASP (Open Web Application Security Project):
- Histórico e Natureza: Criada em 1º de dezembro de 2001 e estabelecida como organização sem fins lucrativos nos EUA em 21 de abril de 2004.
- Atuação: Comunidade internacional aberta que desenvolve diretrizes e recursos globais para o desenvolvimento e operação de softwares confiáveis.
- OWASP Top 10: Documento de conscientização que lista as 10 vulnerabilidades mais críticas em aplicações web e formas de mitigiação (ex.: injeção de SQL / SQL Injection).
3. Vulnerabilidades de Código e Gestão de Riscos
- Análise e Revisão de Vulnerabilidades:
- Uso de ferramentas de análise estática e dinâmica, testes de penetração (pentest) e revisão de código.
- Avaliação contínua da infraestrutura completa (incluindo segurança física de servidores/data centers).
- Plano de Ação para Códigos Inseguros:
- Conscientização: Envolver desenvolvedores, gerentes e equipes de infraestrutura/redes em treinamentos de segurança (ação de baixo custo e alto impacto).
- Modelagem de Riscos e Papeis: Definir um modelo de risco, dividir tarefas em equipes especializadas por módulos do sistema e estabelecer diretrizes formais de codificação.
- Integração de Testes no Ciclo de Vida (DevSecOps): Adicionar testes automáticos e manuais de segurança em cada etapa do desenvolvimento (ex.: validação de entradas, Cruds, testes de parâmetros URL/POST).
- 4 Propriedades Inerentes do Software:
- Confiabilidade
- Conformidade
- Notabilidade
- Invisibilidade
4. Mecanismos de Autenticação e Autorização
- Uso Obrigatório do HTTPS: Aplicação do protocolo criptografado em áreas críticas (formulários de login, checkout/compras, emissão de documentos e relatórios).
- Single Sign-On (SSO): Mecanismo de autenticação única para múltiplos sistemas ou painéis.
- Autenticação de Dois Fatores (2FA / MFA): Camada adicional de verificação por e-mail, SMS ou aplicativos autenticadores.
- Controles de Acesso: Bloqueio temporário por tentativas incorretas (rate-limiting), eliminação de credenciais padrão e uso de CAPTCHA para barrar robôs/automações.
- Ambientes Diferenciados:
- Ambiente de Desenvolvimento: Local onde o software é construído e testado.
- Ambiente de Produção: Sistema final em funcionamento real para os usuários finais.
5. O Comitê Gestor da Internet no Brasil (CGI.br) e Segurança do Usuário
- Papel do CGI.br: Define diretrizes estratégicas para o uso e desenvolvimento da internet no Brasil, coordenando o registro de nomes e a alocação de endereços IP no domínio de primeiro nível
.br. - Tríade do Uso da Internet (Segundo a Mozilla): Confiabilidade, Integridade e Disponibilidade (Tríade CIA), cobrindo ameaças ao protocolo TCP/IP.
- Principais Riscos Online: Vazamento de dados, roubo de identidade, plágio, vírus/malwares, invasão de privacidade e contatos com usuários mal-intencionados.
- Boas Práticas: Manter navegadores, leitores de e-mail e softwares do sistema constantemente atualizados com correção automática de falhas.
6. Tipos de Conexão, Certificados e Arquitetura Web
- Tipos de Conexões Web:
- Conexões Padrão (HTTP): Sem criptografia nativa; trafega em texto claro.
- Conexões Seguras (HTTPS): Utiliza SSL/TLS para criptografar o tráfego, garantindo integridade e confidencialidade.
- Conexões com Validação Estendida (EV SSL): Exibe o nome da organização verificado diretamente na barra do navegador para alto grau de confiança.
- Requisitos do Certificado Digital Válido:
- Emitido por uma Autoridade Certificadora (AC) confiável.
- Dentro do prazo de validade e sem constar na lista de revogação.
- Identidade declarada correspondente ao domínio real do site.
- DNS (Domain Name System): Traduz nomes de domínio para endereços IP e vice-versa (Servidores de referência: BIND no Linux e IIS/DNS Server no Windows).
- Apache +
mod_wsgi: O Apache executa aplicações web escritas em Python por meio do módulo de integraçãomod_wsgi.
Resumo Executivo
A sexta teleaula de Educação a Distância realiza uma revisão geral preparatória para a avaliação, consolidando os pilares de segurança no desenvolvimento de software, arquitetura web e governança da internet. Os professores destacam que a segurança deve ser tratada como um requisito básico no ciclo de vida de desenvolvimento, citando as diretrizes internacionais da Fundação OWASP (criada nos EUA e com atuação global sem fins lucrativos) e o papel do CGI.br no contexto nacional.
A aula foca nas estratégias de mitigação de vulnerabilidades (análise estática/dinâmica, planos de conscientização de equipes e inclusão de testes no ciclo de vida do software), bem como na diferenciação de ambientes (desenvolvimento vs. produção). No campo de redes e protocolos, enfatiza-se a importância da autenticação multifator (2FA), o uso de protocolos seguros (HTTPS com SSL/TLS) para garantir confidencialidade e integridade, os critérios para validação de certificados digitais e o funcionamento do DNS e do servidor Apache com o módulo mod_wsgi para aplicações em Python.
Details
Resumo do Conteúdo
1. Segurança no Desenvolvimento de Software
A segurança deve ser tratada como um requisito fundamental desde o planejamento do código. As práticas e recomendações seguem os padrões globais da Fundação OWASP (Open Web Application Security Project) e as diretrizes nacionais do CGI.br (Comitê Gestor da Internet no Brasil).
- Tratamento de Senhas: Armazenar senhas em texto puro é uma vulnerabilidade grave. Utiliza-se a biblioteca
hashlibem Python para aplicar funções de hash criptográfico seguros (como SHA-256 e SHA-512) juntamente com técnicas de salting (adição de caracteres) para prevenir ataques de força bruta e dicionário. - Mitigação de Vulnerabilidades: Realização de análises estáticas e dinâmicas, testes de injeção de SQL (SQL Injection), revisão de código e implementação do modelo de menor privilégio.
- Mecanismos de Autenticação: Adoção de Single Sign-On (SSO), restrição de tentativas por rate-limiting, uso de CAPTCHA contra automações e implementação de Autenticação de Dois Fatores (2FA/MFA).
2. Arquitetura Web e Infraestrutura
- Modelo Cliente-Servidor: O cliente (navegador/dispositivo) realiza requisições ao servidor (host ou lâmina), que processa e devolve a resposta contendo a aplicação ou dados solicitados.
- Servidor Apache &
mod_wsgi: Utilização do servidor web Apache configurado com o módulomod_wsgipara interpretar e intermediar as requisições direcionadas a frameworks web baseados em Python, como o Flask. - Resolução de Nomes (DNS): Tradução hierárquica entre nomes de domínio amigáveis (ex.:
google.com.br) e endereços IP numéricos, utilizando servidores como BIND (Linux) ou IIS/DNS (Windows). - Anatomia da URL: Estruturação composta por Esquema/Protocolo (
https://), Domínio/Host, Porta (:8080), Caminho (Path), Query String (?param=valor) e Âncora/Fragmento (#secao).
3. Protocolos e Conexões Seguras
- HTTP vs. HTTPS: Diferenciação entre o tráfego inseguro em texto claro (HTTP) e o tráfego criptografado (HTTPS) via camadas de transporte seguro SSL/TLS.
- Certificados Digitais: Validação de identidade emitida por Autoridades Certificadoras (AC) confiáveis, conferindo confidencialidade, integridade e não repúdio às transações digitais.
Conclusão
A disciplina de Programação para Web II demonstra que o desenvolvimento web moderno transcende a simples escrita de scripts. A entrega de uma aplicação pronta para o ambiente de produção exige a integração harmoniosa entre ambientes virtuais de desenvolvimento (ex.: Python/Flask), a correta parametrização de servidores web (como o Apache) e a aplicação rigorosa de protocolos de segurança e criptografia. Ao dominar estes conceitos técnicos e conceituais, o profissional torna-se capacita para criar plataformas web confiáveis, de alto desempenho e alinhadas aos padrões de governança da internet.
Comece a estudar Programação Web hoje mesmo.
Aprimore seus conhecimentos em desenvolvimento web com nossa estrutura completa e conteúdos acessíveis para diferentes níveis.



