Segurança em Engenharia de Software
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Ciência de Computadores |
Ocorrência: 2021/2022 - 2S
Ciclos de Estudo/Cursos
Língua de trabalho
Português - Suitable for English-speaking students
Objetivos
A unidade curricular dá uma introdução à engenharia de software seguro. Os alunos aprendem como usar princípios, técnicas e ferramentas fundamentais para a concepção software seguro, a fim de evitar / detectar / corrigir algumas das classes mais comuns de vulnerabilidades de segurança em software. Estes conhecimentos são exercitados através de trabalhos laboratoriais e práticos.
Resultados de aprendizagem e competências
No final desta unidade curricular, pretende-se que os estudantes:
- Entendam o ciclo de desenvolvimento de software do ponto de vista da segurança em termos de princípios gerais e processos concretos nos várias estágios de desenvolvimento.
- Sejam capazes na prática de aplicar/usar metodologias/ferramentas concretas no desenvolvimento de software seguro por forma a prevenir/detectar/mitigar vulnerabilidades de segurança comuns.
Modo de trabalho
Presencial
Programa
Segurança & engenharia software
- Requisitos de segurança.
- Modelação de ameaças e análise de risco.
- Princípios & falácias na concepção de software seguro.
- "Touchpoints" de segurança no ciclo de desenvolvimento de software
"Building security in" -- técnicas e ferramentas para desenvolvimento de software seguro, incluindo:
- Validação de "input".
- Idiomas de programação segura.
- Auditoria de código usando ferramentas de análise estática.
- Testes de software orientados à segurança.
Análise e prevenção de de vulnerabilidades comuns em software, incluindo:
- Injeção (comandos, código, SQL, etc).
- "Buffer overflows".
- Vulnerabilidades específicas a aplicações Web (XSS, CSRF, etc).
- Fluxos e fuga de informação.
- Vulnerabilidades específicas a sistemas concorrentes.
Bibliografia Obrigatória
Jonh Viega e Gary McGraw; Building Secure Software: How to Avoid Security Problems the Right Way, Addison-Wesley, 2006. ISBN: 978-0201721522
William Stallings, Lawrie Brown; Computer Security: Principles and Practice, 4th Edition, Pearson, 2018. ISBN: 978-1292220611 (https://catalogo.up.pt/F/?func=direct&doc_number=000538196)
Bibliografia Complementar
Miguel Pupo Correia e Paulo Jorge Sousa; Segurança no Software, 2ª edição, FCA, 2017. ISBN: 978-972-722-662-7
Michael Howard, David LeBlanc; Writing Secure Code, 2nd edition, Microsoft Press, 2004. ISBN: 978-0735617223
Brian Chess, Jacob West; Secure Programming with Static Analysis: Getting Software Security Right with Static Analysis, Addison-Wesley, 2007. ISBN: 978-0321424778
Gary McGraw; Software Security, Building Security In , Addison Wesley, 2006. ISBN: 9780321356703
Wenliang Du; Computer & Internet Security: A Hands-on Approach, Second Edition, 2019. ISBN: 978-1733003902
Métodos de ensino e atividades de aprendizagem
As aulas terão uma componente de exposição e discussão dos tópicos programáticos, e outra componente de projetos de aplicação dos conceitos e técnicas e experimentação de ferramentas. Será reservada uma ou duas aulas para a apresentação de tópicos explorados pelos estudantes.
Tipo de avaliação
Avaliação distribuída com exame final
Componentes de Avaliação
Designação |
Peso (%) |
Exame |
50,00 |
Trabalho prático ou de projeto |
30,00 |
Trabalho laboratorial |
20,00 |
Total: |
100,00 |
Componentes de Ocupação
Designação |
Tempo (Horas) |
Elaboração de projeto |
60,00 |
Frequência das aulas |
42,00 |
Estudo autónomo |
60,00 |
Total: |
162,00 |
Obtenção de frequência
Entrega de todos os trabalhos e exame final.
Fórmula de cálculo da classificação final
- Exame Final (50 % da nota final)
- Trabalhos práticos (30 % da nota final)
- Trabalhos laboratoriais (20 % da nota final)
Para aprovação é necessário um mínimo de 40% no exame final.
Melhoria de classificação
- A classificação do exame pode ser melhorada em exame de recurso.