w dzisiejszych czasach można dużo przeczytać o wstrzyknięciu kodu, exploitach, przepełnieniu bufora, stosu i sterty itp., Prowadząc do wstrzyknięcia i uruchomienia kodu. Zastanawiam się, co z tych rzeczy jest istotne dla Javy.Czy wtyczka kodu jest możliwa w Javie?
Wiem, nie ma żadnych wskaźników w języku Java. Ale czy JVM nie organizuje danych w stosach i/lub stosach? Wiem, że nie ma funkcji eval (jak w PHP), więc nie można łatwo użyć danych wejściowych jako kodu Java. Nie jestem pewien, co się dzieje na poziomie bajtów.
Myślę, że XSS jest możliwe, na przykład w aplikacji Java EE, gdy żadne dane wejściowe nie są filtrowane. Ale czy nie jest to bardziej wstrzyknięty JavaScript, ponieważ wstrzyknięty kod działa w przeglądarce, a nie w JVM?
Więc jakie zastrzyki kodu są możliwe z java, a które nie? Czy to samo dotyczy innych języków platformy Java?
Z góry dziękuję.
Ta uwaga o wydajności nie wydaje się strasznie istotne w tym kontekście, wstrzyknięcie kodu niekoniecznie muszą być skuteczne. Większość exploitów nie wymaga wysokiej wydajności .... Chodzi o to, że niewiele aplikacji robi "akceptuj kod, kompiluj, uruchamiaj", ale te, które robią, będą podatne na ataki. – sleske
"Jeśli kompilatory Javy zostaną ujawnione jako lekkie usługi biblioteczne": cóż, już są (sprawdź javax.tools.JavaCompiler, http://java.sun.com/javase/6/docs/api/javax/tools /JavaCompiler.html). Ale znowu, aby wtyczka kodu działała, zaatakowana aplikacja musi * używać * JavaCompiler, który na szczęście nie działa. – sleske
-1 ponieważ dyskusja na temat luk w zabezpieczeniach jest dość zagmatwana ... – sleske