Summative Project

Learning Objectives

Assignment

You've been commissioned to create a prototype of a note sharing app. The app should allow users to save notes they've written. They should also be able to share notes with specific users.

The stakeholders would like the prototype to be deployed online using a hosting service such as Heroku. The company they represent has been involved in a major security scandal recently involving broken access control; as such, they are extremely concerned about security and have asked that, alongside the software, you create a short report explaining how you've ensured your application is protected against the OWASP Top 10 security vulnerabilities.

It's likely you will offload some of the work to a library or framework. For example, you might not deal with SQL directly but instead use an ORM such as Sequelize or Entity-Framework. In this case, you should research how these components protect against the relevant security threats (e.g. SQL injection for an ORM, XSS for a front-end framework etc.) and include this in your report.

Functional Requirements

IDPriorityDescription
F1MustUsers must be able to create an account with a username and password
F2MustUsers must be able to create, read and delete private notes
F3ShouldUsers should be able to give read-access to existing notes to other users by specifying their username

Non-Fuctional Requirements

IDPriorityDescription
NF1MustThe application must be secure against the OWASP Top 10 vulnerabilities
NF2MustThe steps taken to protect against the OWASP Top 10 must be included in a separate document
NF3MustThe application must be accessible online (i.e. be deployed)
NF4MustThe application must meet modern accessability standards
NF5MustThe application's UI must be constructed using a component-based approach
NF6ShouldThe application should include a set of unit and integration tests (including testing for security)
NF7ShouldThe application should be responsive (e.g. to different screen sizes)

Extension Assignment

The company shareholders have insisted that the prototype you create is penetration tested. An expert pen-tester (peer in your cohort) will review the documentation you've created and your src code, then attempt to hack into your application.