Używamy jsp, serwletów, fasoli z bazą danych mysql. Nie chcemy ograniczać znaków wprowadzanych przez użytkowników w polach formularza. Jak więc oczyścić dane wejściowe i jak upewnić się, że dane wyjściowe nie zostaną zmienione w przypadku szkodliwych działań. Czy istnieje sposób wysyłania danych wyjściowych, czy mogę sprawdzić, czy został wysłany dodatkowy kod. Przypuśćmy, że istnieje pole wyszukiwania - użytkownik podaje coś w rodzaju <script>alert("I am here")</script>
. Czy na pewno wiedziałem, że to jest znacznik html. Jeśli użytkownik doda dodatkowy parametr do pola linku, to jest jak przed i po sprawdzeniu, czy mógłbym zrobić dla dokumentu, aby zdać sobie sprawę, że istnieje dodatkowe pole połączenia.Jak najlepiej oczyścić dane wejściowe z aplikacji webowej Java
Odpowiedz
Powinieneś zawsze wykonywać podstawowe wychwytywanie HTML danych pobranych ze źródeł takich jak dane wprowadzane przez użytkownika lub bazy danych, które mogą zawierać nieprawidłowe znaki. Tag JSP <c:out>
wykonuje to na przykład. W ten sposób, jeśli użytkownik wpisze "<script> ..."
w polu i ponownie go wydrukujesz, zostanie wydrukowany do HTML jako "<script> ..."
.
Naprawdę powinieneś pozwolić użytkownikom na wpisanie jak najmniej kodu HTML i/lub javascript. Dobrym rozwiązaniem do sprawdzania poprawności i odkażania tych rzeczy jest użycie gotowej biblioteki, takiej jak OWASP AntiSamy.
Zobacz także OWASP Enterprise Security API, aby zapoznać się z kolekcją metod zabezpieczeń, których programista potrzebuje do stworzenia bezpiecznej aplikacji internetowej.
Podaj jsoup
, aby Ci pomóc. Cokolwiek robisz, nie próbuj hakować tego za pomocą regex lub czegoś, bo wtedy będziesz miał 2 problemy. :-)
Z jsoup
, wszystko czego potrzebujesz to krótki fragment kodu:
String safe = Jsoup.clean(unsafe, Whitelist.basic());
Możesz dodać tagi i atrybuty Whitelist
dość łatwo, choć okazało się, że nie obsługuje tagów nazw.
- 1. Java: Jak uzyskać dane wejściowe z System.console()
- 2. jak uzyskać dane wejściowe z wyskakującego okienka
- 3. Jak wyczyścić dane wejściowe z Angular JS
- 4. Jak wyczyścić dane wejściowe pliku
- 5. testowe dane wejściowe/wyjściowe aplikacji konsoli programu Visual Studio 2012
- 6. Jak czytać sformatowane dane wejściowe w języku Java?
- 7. Jak najlepiej przetestować kod Java?
- 8. Przepływ pracy dla aplikacji webowej Clojure z Dockerem
- 9. Jak wykrywać dane wejściowe przez gniazdo audio?
- 10. datownik i dane wejściowe z maską kątową
- 11. Bootstrap - dane wejściowe (numer) z Chrome
- 12. Dane wejściowe z formularza, GAE, nieprawidłowe
- 13. Jak pobrać dane wejściowe MIDI w C++?
- 14. Dane wejściowe z poziomu skryptu powłoki
- 15. Zarejestruj dane wejściowe z niewidocznego formularza
- 16. Jquery - Jak wstawić znak na dane wejściowe?
- 17. Dane wejściowe modelowania tematu LDA
- 18. Jak można oczyścić program Delphi?
- 19. Jak odczytać dane wejściowe z wielu linii w Javie
- 20. Jak pobrać html z w pełni załadowanej strony (z javascript) jako dane wejściowe w java?
- 21. Jak uzyskać dane wejściowe POST w Tornado?
- 22. Zobacz, jak zmienić dane wejściowe [type = "checkbox"]
- 23. Jak zaimplementować dane wejściowe za pomocą maski
- 24. php: // dane wejściowe zwracają pusty
- 25. Jak wygładzić dane wyjściowe grep, aby wkleić dane wejściowe?
- 26. Wprowadź dane wejściowe w tym samym wierszu, co pole wejściowe
- 27. JAX-RS Akceptuj obrazy jako dane wejściowe
- 28. Ukryj dane wejściowe w wierszu poleceń
- 29. Jak uzyskać dane wejściowe z konsoli JavaScript Chrome?
- 30. Jak odczytać dane wejściowe z konsoli w pliku wsadowym?
Proszę rozważyć zmianę nazwy swoich pytań na pytania typu "Jak najlepiej oczyścić dane wejściowe w Javie" - Twój tytuł pytania nie pomoże tym, którzy szukają podobnych odpowiedzi w przyszłości ... – razlebe
Whoa, kiedy przejdziesz do retag pytania, to wykonuje javascript w pytaniu! Bad stackoverflow, bad! –
@robhruska: Nice find! – Adnan