Tôi có một trang web được viết bởi Rails3. Mô hình bài đăng của tôi có một cột văn bản đặt tên là "nội dung". Trong bảng điều khiển bài đăng, biểu mẫu html thiết lập cột "nội dung" thành trường văn bản bằng tinymce. Ở trang đầu, vì sử dụng tinymce, mã post.html.erb cần triển khai bằng phương thức thô như <%= raw @post.content %>
.Tôi đang sử dụng Rails3 với tinymce. Làm thế nào để trình bày người dùng đóng trình duyệt javascript sau đó nhập xss?
OK, bây giờ nếu tôi đóng javascript trình duyệt, vùng văn bản này có thể nhập mà không có tinymce và có thể người dùng sẽ nhập bất kỳ xss nào như <script>alert('xss');</script>
. Mặt trước của tôi sẽ hiển thị hộp cảnh báo đó.
Tôi cố gắng sanitize(@post.content)
trong posts_controller, nhưng phương pháp khử trùng sẽ lọc kiểu tinymce với nhau. Ví dụ: <span style='color:red;'>foo</span>
sẽ trở thành <span>foo</span>
.
Câu hỏi của tôi là: Làm thế nào để lọc đầu vào xss và kiểu dự trữ tinymce cùng một lúc?