Załóżmy, że chcę, aby użytkownik wprowadził dowolne żądane wyrażenie regularne i ciąg do dopasowania, a ja sprawdzę, czy pasuje on do Pythona pod re.compile
. Czy to bezpieczne? Czy istnieje sposób, aby złośliwy użytkownik mógł się zawiesić lub uzyskać zdalne wykonanie, przekazując specjalnie spreparowane ciągi?Bezpieczeństwo wyrażeń regularnych
7
A
Odpowiedz
9
Nie sądzę, że re.compile()
będzie problemem. Oczywiście może on rzucić wyjątek z niepoprawnymi wyrażeń regularnych, ale możesz je łatwo złapać. Wyrażenia regularne w języku Python nie zezwalają na tworzenie objaśnień kodu (na przykład w przeciwieństwie do Perla), więc nie widzę mechanizmu, który napastnik mógłby użyć do wstrzyknięcia złośliwego kodu do regexu.
Rzeczywiste uruchamianie regex (przez re.search()
itp.) Może być jednak problemem, ponieważ Python nie podejmuje żadnych środków ostrożności przeciwko catastrophic backtracking, co może spowodować, że środowisko wykonawcze regex dojdzie do przestrachu.
Dobrym pomysłem może być uruchomienie regexu w dedykowanym procesie i zabicie go, jeśli nie zakończy się w ciągu sekundy.
Powiązane problemy
- 1. Limit grupy przechwytywania-wyrażeń regularnych wyrażeń regularnych SQL?
- 2. Scalanie dwóch wyrażeń regularnych
- 3. Ungreedy wyrażeń regularnych
- 4. Swift format wyrażeń regularnych?
- 5. Łączenie dowolnych wyrażeń regularnych
- 6. Wyszukiwarka wyrażeń regularnych
- 7. Składnia wyrażeń regularnych Haskella
- 8. Łączenie wyrażeń regularnych
- 9. Generatywne wyrażeń regularnych
- 10. Uproszczenie wyrażeń regularnych w Mathematica
- 11. Łączenie wyrażeń regularnych w JavaScript
- 12. Łączenie wyrażeń regularnych w julia
- 13. Zamiana liter z wyrażeń regularnych
- 14. wyrażeń regularnych brakuje niektórych liter
- 15. Wykonywanie wyrażeń regularnych w strumieniu
- 16. Python: Kompilowanie wyrażeń regularnych równolegle
- 17. Każde dobre oprogramowanie do tworzenia wyrażeń regularnych lub narzędzia online do tworzenia wyrażeń regularnych
- 18. jQuery selector: zawiera - Użyj wyrażeń regularnych
- 19. Narzędzie użytkownika końcowego do generowania wyrażeń regularnych
- 20. Scal kilka wyrażeń regularnych w jeden RE
- 21. Scalanie dwóch wyrażeń regularnych obciąć słowa Strings
- 22. Dlaczego VIM ma własną składnia wyrażeń regularnych?
- 23. MVC sprawdzanie poprawności tylko liczby wyrażeń regularnych?
- 24. Używanie wyrażeń regularnych do porównywania numerów
- 25. Walidacja danych programu Excel - wyrażeń regularnych?
- 26. Czy istnieje DSL do pisania wyrażeń regularnych?
- 27. Dopasuj tekst wielowierszowy za pomocą wyrażeń regularnych
- 28. Analiza najgorszego przypadku dla wyrażeń regularnych
- 29. Jak dołączyć - i "w tych wyrażeń regularnych?
- 30. wyrażeń regularnych: wyodrębnić wszystkie słowa z cytatami
Jako wzmianka, w zależności od potrzeb, może warto rozważyć proste wyrażenie _glob_, zamiast pełnoprawnego regex. Dla większości użytkowników jest to łatwiejsze do zrozumienia. I będzie wymagało znacznie mniej energii do przetworzenia. Ale znowu będzie to zależało od twoich potrzeb ... –