Skip to content

Conversation

@igamiron
Copy link

Cross-Site Scripting

Gdzie: Formularz dodawania książki: POST /books/create/
Możliwe było wprowadzenie złośliwego kodu JavaScript w polu Name. W tym przypadku <script>alert("hacked_by_xss")</script>, który był zapisywany i wykonywany po odświeżeniu strony.

Sposób odtworzenia:

  • Uruchomienie aplikacji
  • Wejść na stronę http://localhost:5000/books/
  • Kliknąć Add new book
  • W polu name wpisać: <script>alert("hacked_by_xss")</script>
  • Po dodaniu książki wyświetla się alert co dowodzi, że złośliwe oprogramowanie wykonało się.
Zrzut ekranu 2025-11-10 o 18 16 05 PM Zrzut ekranu 2025-11-10 o 18 14 10 PM

Zaproponowane rozwiązanie

W pliku: project/books/views.py, w funkcji create_book() użyto markupsafe.escape.
Zastosowano:

name = escape(request.form.get('name'))

author = escape(request.form.get('author'))

year_published = escape(request.form.get('year_published'))

book_type = escape(request.form.get('book_type’))

Taki kod finalnie nie będzie wykonywalny, ponieważ jest zapisywany jako zwykły tekst.
Po ponownym
Zrzut ekranu 2025-11-10 o 18 16 05 PM

Zrzut ekranu 2025-11-10 o 18 46 07 PM Zrzut ekranu 2025-11-10 o 18 47 42 PM

Po zapisaniu alert się nie pojawia, a rekord zostaje pusty.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant