Skip to content

Conversation

@B1rtek
Copy link

@B1rtek B1rtek commented Nov 14, 2025

Opis znalezionej podatności

W formularzach na podstronach /books oraz /customers znalazłem podatność XSS umożliwiającą użytkownikowi wstrzyknięcie złośliwego kodu za pomocą pól formularzy dodających książki oraz klientów i zapisanie go w bazie danych aplikacji, powodując jego wykonanie przy każdym załadowaniu strony:
obraz
obraz
Pola w formularzach podatne na XSS to:
Na podstronie /books:

  • Name
  • Author

Na podstronie /customers:

  • Name
  • City

Kroki reprodukcji

  1. Otworzyć stronę /books.
  2. Kliknąć przycisk "Add New Book".
  3. W polu "Name" wpisać <script>alert("xss")</script>.
  4. Pozostałe pola wypełnić w dowolny sposób a następnie klinkąć "Add Book".
  5. Odświeżyć stronę jeżeli nie nastąpi to automatycznie.

Efekt:
Na ekranie w momencie ładowania się strony pojawi się komunikat z przeglądarki o treści "xss".

Zaimplementowana poprawka

Zaimplementowana poprawka polega na wyczyszczeniu wprowadzonych przez użytkownika danych w taki sposób, aby nie zawierały one znaków interpretowanych jako specjalne w języku HTML, dzięki czemu wprowadzone dane mogą zostać bezpiecznie zapisane do bazy danych a potem wyświetlone. W tym celu została użyta funkcja escape() z pakietu markupsafe:

class Book(db.Model):
   # (...)

    def __init__(self, name, author, year_published, book_type, status='available'):
        self.name = markupsafe.escape(name)
        self.author = markupsafe.escape(author)
        # (...)

Testy

W katalogu tests zostały dodane testy jednostkowe sprawdzające poprawność działania dodanej poprawki.

Autor: Bartłomiej Pełka

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