Tôi đoán điều này sẽ liên quan đến regexp hoặc một cái gì đó, nhưng tôi sẽ cho nó một shot. Vào phút, người dùng có thể phá vỡ một trang web bằng cách nhập một cái gì đó tương tự như £$(*£$(£@$&£($
vào trường tiêu đề, được chuyển đổi thành một con sên bằng cách sử dụng Django slugify
.Xác nhận một con sên ở Django
Vì không thể chuyển đổi các ký tự này, Django sẽ trả về lỗi. Câu hỏi của tôi là, tôi nên đặt gì vào phương thức xác thực biểu mẫu để nâng cao forms.ValidationError
khi người dùng sử dụng tiêu đề như thế này?
Cảm ơn.
Dường như hoạt động. Cảm ơn nhiều bạn. Trong phương thức clean_field: nếu re.match ("[a-zA-Z0-9] +", potential_slug) == Không: tăng biểu mẫu.ValidationError ("Tiêu đề không phải là chậm chạp") – user116170
Regex này không ' t tài khoản cho việc sử dụng VERY COMMON của dấu gạch ngang "-" trong sên. Ngoài ra, \ d là thừa vì \ w cũng bao gồm các chữ số. Câu trả lời của Ben dưới đây là chính xác hơn. – Humphrey
Câu trả lời của Ben dưới đây là chính xác hơn. [a-zA-Z0-9] + không khớp với dấu gạch dưới và dấu gạch ngang, [\ w \ d] + khớp với dấu gạch dưới chứ không phải dấu gạch nối. –