adetaylor / browser-learning

Games and exercises to learn about browsers and security

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Browser learning exercises

This project provides games for high school / secondary school computer scientists to learn about how browsers work and what security bugs might exist in them.

See Contributing to contribute.

For teachers

See For Teachers, and setup.

For students

If your teacher has already run through the setup instructions, or you're comfortable doing them yourself, then proceed to the actual content below.

Part One: What's a browser and a server

  • Exercise 1a: Use a real browser. Navigate to wikipedia. View source. Find some things in the HTML.
  • Exercise 1b: Use our mini Python browser. Go to the same place. Look in the code of our Python browser to see how it handles b and a tags.
  • Exercise 1c: Run our mini Python web server. Create your own HTML file. See how the browser responds.

Part Two: Building a browser

  • Exercise 2a: Add support for italic text in the browser.
  • Exercise 2b: Add support for font color or similar.
  • Exercise 2a: Add word wrap in the browser. (HARD!)
  • Exercise 2d: Invent your own HTML tag. Add it to the browser and to some HTML pages in the server. See how it works end-to-end.

Part Three: Encryption

  • Exercise 3a: See the web traffic flowing between the mini browser and the mini server when using HTTP. See what happens when you try different URIs. See what happens when different types of error occur.
  • Exercise 3b: Try the same with HTTPS.

Part Four: Security bugs

  • Exercise 4a: Find some security bugs hidden in the code of our mini browser.
  • Exercise 4b: Write a program that finds bugs in another program (a "fuzzer").

Related projects

If you enjoyed this project, eee also browser.engineering, another Python demonstration browser! browser.engineering goes much further than this browser - it includes JavaScript, CSS etc. - with commensurately more complex code and runtime needs.

About

Games and exercises to learn about browsers and security

License:Apache License 2.0


Languages

Language:Python 95.2%Language:HTML 3.9%Language:Shell 0.9%