From f48a93cb63a8cefafa354933556fa0fcc0a22f85 Mon Sep 17 00:00:00 2001 From: Nikita Ryazhskikh Date: Fri, 2 Oct 2026 21:31:43 +0200 Subject: [PATCH] Update README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Oppdaterte repoen til å inneholde oppdatert readme --- README.md | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 98 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6fd63f9..e371941 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,101 @@ # T08-Project-2 -Repository for team IT2810-H26-T08 in IT2810-H26. +## Applikasjonskonseptet +I prinsippet er nettsiden et slags oppslagsverk for de som er interesserte i cybersikkerhet. Den gir en oversikt over 190 trusselaktører, 858 teknikker, 828 programvarer og 15 overordnede mål ved cyberangrep. +Akkurat nå bruker nettsiden placeholders og mock-data for å gi et overblikk over det tenkte utseendet til siden, samt hva slags funksjonalitet som skal implementeres. +Brukere kan bruke nettsiden til å finne informasjon om hvilket land en trusselaktør tilhører, motivasjonen dens, mål, om den fortsatt er aktiv og risikonivå. +Ved hjelp av søke- sorterings- og filtreringsfunksjonaliteten vi skal implementere, kommer nettsiden til å fungere som en katalogtjeneste over ulike trusler og trusselaktører. + +##Datakilde +### Datagrunnlag +Applikasjonen er planlagt til å bli basert på MITRE ATT&CK Enterprise datasett. Datasettet inneholder flere ulike typer cybersikkerhet relaterte data, men i applikasjonen vår så velger vi å fokusere på: +- **Threat Actors**: Ulike «hacker groups». +- **Techniques**: Ulike «metoder» som brukes av threat actors for å oppnå ondsinnede mål. +- **Software**: Ulike «programvare» som brukes av threat actors for å oppnå ondsinnede mål. +- **Tactics**: Ulike «mål» threat actors ved sine ondsinnede angrep. +I tillegg er disse entitetstypene koblet sammen gjennom relasjoner. For eksempel: +- «Threat Actor X bruker Software Y1, Y2, Y3 i angrepene sine». +- «Tactic A, har Techniques B1, B2, B3 som kan brukes for å oppnå angrepsmålet A» + +### Datamodell +Dette er det foreløpige modellen (planen) som brukes som grunnlag for nettside designet. Mange av ønskede attributter finner man i enterprise-attack-19.2.json til MITRE, og deretter bruker man en import script for å «laste opp» data inn i selve databaseskjemaet som kjører MySQL. + image + +Likevel, så fant vi ikke alle ønskede attributter i datasettet, og derfor må utvide den ved hjelp av KI. Primært blir ThreatActor(country, region, first_seen, last_seen, status, danger_lever) attributtene utledet fra attributtet ThreatActor(Description), og deretter flettet inn i import scripten. + +## Planlagt funksjonalitet +Applikasjonen er planlagt til å støtte: +### Browsing +Brukere vil klare å browse Threat Actors, Tactics, Sotware og Techniques separat +### Search +At brukere vil klare å søke i datasettet, for eksempel på Home-page (på tvers av entiteter) og på spesifikke entitets-sider f.eks Threat Actor-page (søk gjennom relevante threat-actor data) +Resultatet vil bli presentert som én liste (med pagination, for å støtte skalerbarhet), der hvor en bruker kan åpne en «detailed-view» ved å trykke på én bestemt resultat for å se mer informasjo. +### Filtrering og Sortering +Brukere vil klare klare å filtrerer og sortere relevante entiteter bassert på deres attributter. For eksempel: +- platform +- country +- software type +### Detailed view +Hver entitet skal ha sin egen detailed view, for å vise mer informasjon, dette inkluderer informasjon om releasjoner valgte entitet har til andre entiteter. (Threat Actor «uses» Techniques 1, Techniques 2, ...) + ### Navigasjon mellom relatert data +Brukere skal kunne utforske entitene som står i relasjon med hverandre. Dvs gå fra ThreatActor direkte til relatert Technique, istedenfor å se hver entitet isolert. +### Saved Items / Bruker genererte data +Brukere skal også kunne lagre ulike entitetene. Akkurat nå er dette midlertidig idé for å oppfylle kravet om lagring av brukergenerert data. +Dermed har vi ikke bestemt oss for hvilken idé som skal bli med videre i utviklingsprosessen. Og eventuelt om hvordan vi skal separere ulike brukere. Databasen støtter lagring av ulike brukere, men vi har ikke bestemt oss for måten vi skal gjøre dette på. +Vi har likevel snakket rundt flere ideer for hvordan vi kan implementere noe som lar oss lagre brukergenererte data. Deriblant ulike spill, quizzer og «xp» og nivå tilknyttet brukere basert på deres score i disse spillene. +### Responsiv design +Noen sider har allerede implementert basic responsiv design. Vi kommer til å jobbe videre på resposivt design for å forsikre kvaliteten på det. +## Teknisk løsninger +Applikasjonen er designet som en fullstack applikasjon, altså frontend, backend og database. +Dermed blir flyten ca slik: +frontend (React + Typescript) + ↕ +GraphQL + ↕ +backend (Node.js + Typescript) + ↕ +database (MySQL) + +### Frontend +Frontend utvikles med React og TypeScript og settes opp med Vite. Frontend er ansvarlig for blant annet: +- presentasjon av søkeresultater +- søk, filtrering og sortering +- navigasjon mellom relaterte entiteter +- detailed views +- brukerinteraksjon +I den nåværende prototypen brukes hovedsakelig mock-data og statiske eksempeldata. +### Backend +Backend skal utvikles med Node.js og TypeScript og tilby et GraphQL API som frontend kan bruke for å hente og endre data. +Backend er foreløpig ikke implementert. +### Database +Det er planlagt å bruke MySQL som database. MITRE ATT&CK-datasettet skal importeres til databasen ved hjelp av et import-script som transformerer dataene fra det opprinnelige JSON-formatet til databaseskjemaet vårt. Database og backend skal senere kjøres på VMen. +## Nåværende status og prototype +Det som er implementert frem til nå: +- Oppsett av utviklingsmiljø for frontend, backend og database +- Overordent layout og navigasjon +- Prototype for visning av Home pagen +- Prototype for visning av Threat Actors pagen +- Prototype for visning av Techniques pagen, +- Prototype for visning av Software pagen, +- Prototype for visning av Tactics pagen +- Prototype for visning av Saved Items pagen +- Statiske mock-data for demonstrasjon +- Grunnleggende responsiv design +- Design, oppsett, dokumenasjon og importscript for databasen + +De ulike sidene har litt ulik layout. Dette er fordi vi var litt usikre på nøyaktig hvilke designvalg som ville være best. For eksempel er innholdet i Home og SavedItems helt til venstre (med "max-width: none" og "margin: 0"). I den detaljerte techniques siden er det også et bakgrunnsbilde. Gjerne gi tilbakemeldinger på hva som (ikke) funker, slik at vi har en pekepinn til videre utvikling av siden. + +## KI deklarasjon +KI har blitt brukt til veiledning i store deler av prosjektet. Ofte har ideer om implementasjon, definisjon av navn og oppførsel samt forslag til forbedringer blitt gjort av oss, mens KI har lettet arbeidslasten med å foreslå kode som samsvarer med det vi la frem. Vi har lagt fokus på å se gjennom koden og nettsiden for å kvalitetsikre, og har manuelt rettet opp der vi ikke er fornøyde. + +## Kjøre prosjektet lokalt + +For å kjøre koden, kjør: + +pnpm install i rotmappen, deretter: + +cd frontend + +fordi vi har kun satt opp prosjektet til å kjøre frontend hittil. Deretter: +pnpm run for å kjøre nettsiden.