Files
microdot/examples/csrf
2025-12-20 19:43:08 +00:00
..
2025-12-20 19:43:08 +00:00
2025-12-20 19:43:08 +00:00
2025-12-20 19:43:08 +00:00

CSRF Example

This is a small example that demonstrates how the CSRF protection in Microdot works.

Running the example

Start by cloning the repostory or copying the two example files app.py and evil.py to your computer. The only dependency these examples need to run is microdot, so create a virtual environment and run:

pip install microdot

You need two terminals. On the first one, run:

python app.py

To see the application open http://localhost:5000 on your web browser. The application allows you to make payments through a web form. Each payment that you make reduces the balance in your account. Type an amount in the form field and press the "Issue Payment" button to see how the balance decreases.

Leave the application running. On the second terminal run:

python evil.py

Open a second browser tab and navigate to http://localhost:5001. This application simulates a malicious web site that tries to steal money from your account. It does this by sending a cross-site form submission to the above application.

The application presents a form that fools you into thinking you can win some money. Clicking the button triggers the cross-site request to the form in the first application, with the payment amount set to $100.

Because the application has CSRF protection enabled, the cross-site request fails.

If you want to see how the attack can succeed, open app.py in your editor and comment out the line that creates the csrf object. Restart app.py in your first terminal, then go back to the second browser tab and click the "Win $100!" button again. You will now see that the form is submitted successfully and your balance in the first application is decremented by $100.