Uppgiftsbanken

Uppgifter, övningar och laborationer i HTML, CSS, JavaScript, PHP, SQL för att du skall få öva dig i webbprogrammering och webbutveckling.

Lager appen del 6

Vi avslutar vår Lager-app med en kundservice chatt.

Read more »

Category: javascript.

Lager appen del 5

Vi ska i denna uppgiften använda oss av Web-API:s för att komma åt native-funktionalitet i våra fysiska mobila enheter. Vi använder en mobil enhets styrka och läggar till funktionalitet för GPS, kartor och kamera.

Read more »

Category: javascript.

Yahtzee spelet del 2 - Flask

I denna uppgiften ska ni binda ihop Yahtzee spelet så att ni får ett fungerade Yahtzee för en spelare.

Read more »

Category: oopython.

Yahtzee spelet del 2 - klasser

I denna uppgiften ska ni fortsätta med Yahtzee spelet ni började på i kmom02.

Read more »

Category: oopython.

Fortsättning på Yahtzee spelet

I denna uppgiften ska ni binda ihop Yahtzee spelet så att ni får ett fungerade Yahtzee för en spelare.

Read more »

Category: oopython.

Skapa en webbserver i Docker

Du har installerat och bekantat dig med Docker enligt Docker-guiden. Nu ska vi använda Docker som en lokal webbserver på vår egna dator, ungefär så som det fungerar i molnet.

Read more »

Category: moln.

Kontinuerlig säkerhet

Ni ska använda olika verktyg för att hitta säkerhetsproblem i Microbloggen och lägga till dem i er CI kedja.

#Krav

  1. När ni löser fel som hittas med nedanstående verktyg och commitar koden som löser felen, skriv tydliga commit meddelanden som förklarar vilket fel ni löser.

    • I redovisningstexten ska ni förklara vilka fel ni hittade och löste.
  2. Använd SAST verktyget Bandit för att hitta möjliga säkerhetshål i Python koden och lös dem.

    • Lägg till det som ett beroende i requirements/test.txt.
    • Kör Bandit på koden i mappen app. Vi behöver inte köra det mot övrig kod i repot.
    • Lägg till ett Make kommando som kör bandit på er kod.
    • Lös de fel som hittas.
      • Avgör om de fel som hittas är false-positiv eller inte. Om false-positive kan ni lägga till så felet ignoreras.
  3. Använd skanner verktyget Trivy för att hitta möjliga säkerhetshål.

    • Använda target:
      • image för att söka igenom er Microblog produktions image.
        • Använd scanners, vuln,secret,config.
      • fs för att söka igenom hela repo mappen. Ni kan exkludera .venv mappen.
        • Använd scanners, vuln,secret,config.
    • Lägg till make kommando för båda target.
    • Lös felen som hittas.
  4. Använd Docker lint verktyget Dockle för att hitta möjliga säkerhetshål i er produktions image.

    • Lägg till make kommando som kör Dockle på er produktions image.
    • Lös de fel som hittas.
  5. Skapa ett nytt workflow I Github Actions som kör Bandit, Trivy och Dockler på samma sätt som beskrivet ovanför.

    • Ert nya workflow ska köras före era CD workflow och måste passera för att ni ska pusha er Docker image och driftsätta den.
    • Det finns en färdig dockle Action man kan använda men ni ska inte göra det. Den söker även er “base image” men vi vill inte det och jag har inte hittat något sätt att stänga av det. Kör istället som vanligt via docker.

#Revision history

  • 2023-11-17: (A, aar) Första versionen.

Document source.

Read more »

Microbloggen i Ansible

Ni ska nu skapa playbooks för att sätta upp alla delar av microbloggen; databasen, applikationen på två servrar och en load balancer. När vi bara hade en server använde vi Nginx som en reverse proxy för att skicka vidare requests till Flask appen. Nu ska vi använda Nginx som en load balancer istället.

#Krav

Efter kraven finns lite hjälp för att lösa er Playbooks.

  1. Skapa en Ansible playbook för att starta en MySQL databas i en Docker container på en server. Den ska köra på host “database”.
    • Installera docker
    • Starta en MySQL container.
  2. Skapa en Ansible Playbook för att starta er Microblog container. Den ska köras på host “appserver”, alltså ska den köras på både appserver1 och appserver2.
    • Installera docker
    • Starta en Microblog container som kopplas till MySQL containern som körs på host database.
  3. Skapa en Ansible Playbook som installera och sätter upp Nginx som en load balancer.
    • Installera Nginx
    • Konfigurera load balancer som går till båda appserver1 och appserver2.
    • Hårdkoda inte båda appserver, gör en dynamisk lösning som klarar av att vi lägger till fler appservrar utan att behöver ändra koden.
    • Konfigurera HTTPS för ert domännamn.

#Tips

I Ansible, i era playbooks använd host namnet database för installationen av databasen, appserver för era servrar med Microblog och loadbalancer för Nginx.

Ni kan använda ansible-lint för att få tips på hur ni bör skriva er Ansible kod. Ni kan använda -x <list of rules> för att exkludera regler.

Tips Skapa en roll som bara installerar Docker. Den kan ni återanvända för appserver och database.

#Database playbook

När ni startar MySQL containern kan ni inte använda hashade lösenord, MySQL klara inte av det. De måste vara i plain-text.

När ni startar containern skicka också med - MYSQL_ROOT_PASSWORD=<password> som environment variabel, ni kommer använda det längre fram.

#Microblog playbook

När ni ska koppla Flask appen till databasen behöver ni IP addressen för databas servern, ni kan inte längre använda er av Dockers länkning för att de körs på två olika maskiner. I ansible kan ni använda {{ groups.database[0] }} för att få ut IP för databas hosten. Tips om ni inte lyckas koppla upp er mot database kan ni logga in på er VM och köra docker logs <microblog container namn> för att se loggen för docker containern.

#Load balancer playbook

Nginx ska skicka vidare requests till applikations servrarna.

  • Ni kan hitta två config filer för Nginx som load balancer på Gist.

  • I upstream app-hosts, där man bestämmer vilka vilka servrar requests ska skickas vidare till. Är nu bara en av appserver tillagd. Ändra så båda servrar är med. Ni får inte hårdkoda båda servrarna, gör en dynamisk lösning som hanterar om vi lägger till fler appservrar. T.ex. med en loop.

  • Använd template modulen i Ansible för att flytta conf filerna. Notera variablerna i load-balancer.conf.j2 som ni behöver ha värden till i Ansible.

  • nginx.conf.j2 till /etc/nginx/nginx.conf

  • load-balancer.conf.j2 till /etc/nginx/sites-available/load-balancer.conf.

  • Ni kan använda file modulen för att länka load-balancer.conf till sites-enabled mappen.

Tips Ni hittar loggfilerna för Nginx i /var/log/nginx. Om en konfig fil inte fungerar kan ni köra nginx -t för att validera den.

Tänk på att ni kan använda sudo nginx -t som validate steg, på tasks i Ansible, för att validera er Nginx konfiguration.

#Revision history

  • 2023-11-09: (A, aar) Första versionen.

Document source.

Read more »

#Attacker på Juice Shop

Uppgiften går ut på att lära sig attacker med hjälp av “OWASP Juiceshop”. Det är ju olagligt att utföra attacker och därför installerar vi en kopia av Juiceshop lokalt. Sen utför vi attacker mot vår Juiceshop och kan om vi behöver ta hjälp av deras “Hacking instructor” och “Tutorials”.

Read more »

Category: itsec.

Bygg en månadskalender och ett gissningsspel med PHP datastrukturer

Du skall bygga ut din webbplats och dels skapa en almanacka i form av en månadskalender med bilder och dels skall du göra ett litet gissningsspel. I övningen kommer du att få jobba med att organisera ditt PHP-kodande och jobba med bland annat arrayer och funktioner.

Du kommer också få träna på HTML formulär med POST och sessioner.

Du jobbar i din tidigare struktur av sidkontrollers och vyer och bygger ut din befintliga webbplats.

Read more »

Category: kurs webtec.