원하는 정규 표현식과 일치하는 문자열을 사용자가 입력하게하고 파이썬의 re.compile
을 사용하여 일치하는지 확인합니다. 안전합니까? 특수하게 조작 된 문자열을 전달하여 악의적 인 사용자가 충돌하거나 원격 실행을 수행 할 수있는 방법이 있습니까?정규 표현식 보안
7
A
답변
9
나는 re.compile()
이 문제가 될 것이라고 생각하지 않습니다. 물론 그것은 잘못된 정규 표현식으로 예외를 던질 수는 있지만 쉽게 잡을 수 있습니다. 파이썬 정규 표현식은 (예를 들어 Perl과 달리) 코드 콜 아웃을 허용하지 않으므로 공격자가 악성 코드를 정규식에 삽입하는 데 사용할 수있는 메커니즘을 보지 못합니다.
실제 정규식을 실행하는 것은 (re.search()
등을 통해) 문제가 될 수 있습니다. 왜냐하면 파이썬은 정규식의 런타임이 급증 할 수있는 catastrophic backtracking에 대한 예방 조치를 취하지 않기 때문입니다.
정규 표현식을 전용 프로세스로 실행하여 1 초 이내에 끝내지 않으면 죽이는 것이 좋습니다.
관련 문제
- 1. 정규 표현식 정규 표현식 돼지
- 2. 정규 표현식의 정규 표현식?
- 3. Javascript 정규 표현식 코드 - PHP 정규 표현식?
- 4. 이맥스 정규 표현식 빌더 교체 - 정규 표현식
- 5. 정규 표현식
- 6. 정규 표현식 : //
- 7. 정규 표현식 :
- 8. 정규 표현식
- 9. 정규 표현식
- 10. 정규 표현식
- 11. 정규 표현식
- 12. 정규 표현식
- 13. 정규 표현식
- 14. 정규 표현식
- 15. 정규 표현식/
- 16. 정규 표현식
- 17. 정규 표현식
- 18. 정규 표현식
- 19. 정규 표현식
- 20. 정규 표현식
- 21. 정규 표현식
- 22. 정규 표현식
- 23. 정규 표현식
- 24. 정규 표현식
- 25. 정규 표현식
- 26. 정규 표현식 ('...')
- 27. 정규 표현식
- 28. 정규 표현식
- 29. 정규 표현식
- 30. 정규 표현식
사이드 노트로, 필요에 따라 본격적인 정규 표현식 대신 간단한 _glob_ 표현식을 고려해 볼 가치가 있습니다. 대부분의 사용자는 이해하기가 더 쉽습니다. 그리고 처리하는 데 훨씬 적은 전력이 필요합니다. 그러나 다시, 그것은 당신의 필요에 달려 있습니다 ... –