Gratuito – Programação para Web II

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 hashlib em 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ódulo mod_wsgi para 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:
    1. Identificar os pontos fracos da aplicação.
    2. Planejar as melhorias técnicas necessárias.
    3. 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

  1. Compreender os conceitos de ameaça, vulnerabilidade e contramedida.
  2. Identificar as causas raízes de falhas de segurança em aplicações.
  3. Conhecer e utilizar recursos da fundação OWASP para testes automatizados e estudos de caso reais.
  4. 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:

  1. 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.
  2. 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).
  3. 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.
  4. 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 .br por meio do registro.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.
  • 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.br e 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.
  • 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.

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:
    1. Esquema (Protocolo): Define a forma de comunicação (ex.: http://, https://, ftp://).
    2. Domínio / Host: Endereço da máquina ou servidor na rede (ex.: cursos.ead.ifro.edu.br ou localhost).
    3. Porta: Ponto lógico de conexão com o serviço (ex.: :80, :8080, :5000).
    4. Caminho (Path): Diretório ou rota interna dos arquivos/recursos dentro do servidor.
    5. Query String: Parâmetros enviados na URL através de requisições GET (ex.: ?nome=cleiton&id=123).
    6. Fragmento (Âncora): Aponta para uma posição específica dentro de uma página (ex.: #topo).
  • 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).

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.

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_wsgi para 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:
    1. Conscientização: Envolver desenvolvedores, gerentes e equipes de infraestrutura/redes em treinamentos de segurança (ação de baixo custo e alto impacto).
    2. 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.
    3. 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:
    1. Confiabilidade
    2. Conformidade
    3. Notabilidade
    4. 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ção mod_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 hashlib em 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ódulo mod_wsgi para 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.