Giả sử tôi muốn cho phép người dùng nhập bất kỳ biểu thức chính quy nào mà anh ta muốn và chuỗi để khớp, và tôi sẽ kiểm tra xem nó có khớp với sử dụng re.compile
của Python hay không. Điều đó có an toàn không? Có cách nào để người dùng độc hại gặp sự cố hoặc thực hiện từ xa bằng cách truyền các chuỗi được tạo đặc biệt không?Bảo mật của cụm từ thông dụng
7
A
Trả lời
9
Tôi không nghĩ rằng re.compile()
sẽ là một vấn đề. Tất nhiên nó có thể ném một ngoại lệ với regexes không hợp lệ, nhưng bạn có thể dễ dàng bắt những người đó. Python regexes không cho phép chú thích mã (không giống như Perl, ví dụ), vì vậy tôi không thấy một cơ chế mà kẻ tấn công có thể sử dụng để tiêm mã độc vào một regex.
Thực tế chạy regex (qua re.search()
, v.v.) có thể là một vấn đề, bởi vì Python không thực hiện bất kỳ biện pháp phòng ngừa nào chống lại catastrophic backtracking có thể khiến thời gian chạy của regex tăng vọt.
Có thể nên chạy regex trong một quy trình chuyên dụng và giết nó nếu nó không hoàn thành trong vòng một giây.
Các vấn đề liên quan
- 1. cụm từ thông dụng "chứa" một cụm từ thông dụng khác
- 2. Hiệu ứng của "*" trong cụm từ thông dụng là gì?
- 3. Cụm từ thông dụng của Python - re.search() vs re.findall()
- 4. Cụm từ thông dụng của Python: cách loại trừ superstrings?
- 5. .NET BindingSource.Filter với cụm từ thông dụng
- 6. cụm từ thông dụng \ Z (? Ms)
- 7. cụm từ thông dụng cho DOT
- 8. Ai định nghĩa cụm từ thông dụng?
- 9. Unicode, cụm từ thông dụng và PyPy
- 10. Thoát biến trong Cụm từ thông dụng
- 11. Cụm từ thông dụng và GWT
- 12. Cụm từ thông dụng tốt là gì?
- 13. đơn giản hóa cụm từ thông dụng
- 14. Cụm từ thông dụng trong Bash Script
- 15. ?: Ký hiệu trong Cụm từ thông dụng
- 16. Thay thế mật khẩu trong chuỗi kết nối bằng cụm từ thông dụng trong C#
- 17. Tại sao cụm từ thông dụng được gọi là cụm từ "thông thường"?
- 18. Cụm từ thông dụng trong OCaml
- 19. Cụm từ thông dụng trong findstr
- 20. Cụm từ thông dụng C++ Qt
- 21. Tham gia các cụm từ thông dụng
- 22. Cụm từ thông dụng trong C
- 23. Cụm từ thông dụng trong DB2 SQL
- 24. Cụm từ thông dụng: Đảm bảo b không nằm giữa a và c
- 25. Cụm từ thông dụng để khớp với hai cụm từ riêng biệt
- 26. Mở thông tin bảo mật của trình duyệt bằng JS?
- 27. Bảo mật của Grails
- 28. Mã thông báo bảo mật WIF Caching
- 29. Cụm từ thông dụng chuyển thành biểu đồ
- 30. Cụm từ thông dụng có thể được phân tích cú pháp bằng cụm từ thông dụng không?
Là một lưu ý phụ, tùy theo nhu cầu của bạn, có thể đáng xem xét một biểu thức _glob_ đơn giản, chứ không phải là regex chính thức. Đối với hầu hết người dùng, nó dễ hiểu hơn. Và nó sẽ đòi hỏi ít năng lượng hơn để xử lý. Nhưng một lần nữa, nó sẽ phụ thuộc vào nhu cầu của bạn ... –