2010-03-01 32 views
8

Tôi muốn cho phép người dùng để lại nhận xét văn bản đa dạng thức, có thể sử dụng đánh dấu. Tôi đã cài đặt các thư viện được sử dụng trên Reddit, nhưng lo ngại về tấn công javascript injection xảy ra vào năm ngoái, đặc biệt là vì tôi vẫn chưa rõ ràng về các chi tiết về cách tấn công được thực hiện. Tôi có nên vẫn lo ngại về bảo mật bình luận không? Có một chuỗi kiểm tra mà tôi có thể đặt qua hệ thống của mình để kiểm tra các lỗi tương tự đã làm giảm reddit không?Thư viện an toàn Markdown Python

Trả lời

4

Python-Markdown - loại 'chuẩn' nhiều hơn hoặc ít hơn - có tính năng 'chế độ an toàn' thoát thẻ html. Điều đó là đủ để chống lại hầu hết tất cả các cuộc tấn công HTML injection.

4

reddit sử dụng discount markdown library ngay bây giờ.

+0

Tôi đang làm việc trong môi trường trăn thuần túy (công cụ ứng dụng của Google) nên tôi không nghĩ mình có thể sử dụng thư viện C. Tôi đang xem thư viện Scavenger đã đề cập ở trên và cũng xem mã filters.py và markdown.py từ reddit. Thư viện freewisdom là * dự định * sẽ được đưa vào một dự án khác, trong khi rõ ràng bạn dự định mã reddit để làm việc trong reddit, do đó, nghiêng tôi về phía mã freewisdom. Mặt khác, tôi tò mò về lý do tại sao bạn cần phải viết mã bộ lọc của riêng mình ngay từ đầu - có lỗ hổng nào trong các thư viện công khai mà tôi cần biết không? – MichaelBlume

2

Các câu trả lời khác đề cập đến chế độ an toàn của Python-Markdown nhưng hiện không được chấp nhận. Các tác giả của Python-Markdown đã được trích dẫn nói:

"an toàn chế độ" là một tên lựa chọn người nghèo mà chúng ta tiếp tục sử dụng cho lùi so sánh (mã cũ vẫn hoạt động với các phiên bản mới hơn của chúng tôi). Điều thực sự là là chế độ không đánh dấu. Nói cách khác, nó chỉ là một cách để không cho phép html thô và thực sự không đảm bảo an toàn.

Hiện tại, họ khuyên bạn nên sử dụng trình vệ sinh HTML như Bleach để vệ sinh đầu ra Đánh dấu. mdx_bleach là một tiện ích mở rộng Python-Markdown thực hiện điều đó. Disclaimer: Tôi là tác giả của phần mở rộng này.

Vì nó sử dụng html5lib để phân tích các đoạn tài liệu giống như cách trình duyệt thực hiện, Bleach cực kỳ linh hoạt với các cuộc tấn công không xác định, nhiều hơn so với các công cụ vệ sinh thông thường.

Các vấn đề liên quan