Chúng tôi đang xây dựng trang web nội dung do người dùng tạo, nơi chúng tôi muốn cho phép người dùng có thể nhúng các nội dung như video, trình chiếu, v.v. Bất kỳ ai cũng có thể đề xuất danh sách thẻ được chấp nhận chung/thuộc tính để cho phép trong đường ray vệ sinh mà sẽ cung cấp cho chúng tôi bảo mật khá tốt, trong khi vẫn cho phép một số lượng tốt của định dạng nội dung/html có thể nhúng?Rails Sanitize: An toàn + Cho phép nhúng
Trả lời
Miễn là bị tắt, bạn sẽ có thể cho phép các đối tượng. Bạn thậm chí có thể xác định các thông số chấp nhận được của các thẻ đối tượng thực tế, do đó bạn chỉ cho phép một danh sách trắng và không thể bao gồm các đối tượng abitrary.
Tuy nhiên, có thể tốt hơn là cung cấp hỗ trợ giao diện người dùng để nhúng. Ví dụ: tôi nhắc người dùng nhập URL YouTube và sau đó lấy mã nhúng cho video từ đó.
Một số lợi ích: - mã YouTube mặc định là không tiêu chuẩn phù hợp để tôi có thể xây dựng riêng Object đang tôi - người sử dụng tôi đã hoàn toàn kiểm soát cách các yếu tố nhúng có trong trang đầu ra
Thành thực mà nói rằng cho phép để sử dụng trình soạn thảo HTML của WYSIWYG có thể nghe hay, nhưng trong thực tế, nó không hoạt động tốt cho cả người dùng và nhà phát triển. Lý do là:
- Vẫn còn quá khác biệt trong các trình duyệt khác nhau.
- Danh sách trắng cho phép bảo mật trang web, nhưng người dùng sẽ kết thúc cuộc gọi và yêu cầu cho phép tham số khác cho thẻ OBJECT hoặc tương tự. Danh sách đen không an toàn.
- Không nhiều người dùng biết thẻ HTML là gì.
- Đối với người dùng khó định dạng văn bản (cách bạn có thể yêu cầu họ sử dụng HEADER thay vì BOLD + FONT-SIZE).
- Nói chung nó khá đau và bạn không thể thay đổi thiết kế trang nếu cần vì người dùng không sử dụng đúng HTML.
Nếu tôi đang sử dụng hệ thống giống như CMS ngay bây giờ, tôi có thể đi với đánh dấu ngữ nghĩa đánh dấu.
Hầu hết người dùng, làm quen với nó một cách nhanh chóng và nó chỉ là văn bản thuần túy (như ở đây tại SO).
Ngoài ra, bạn có thể tạo HTML thích hợp và hỗ trợ các thẻ cần thiết.
Ví dụ nếu bạn cần phải nhúng hình ảnh bạn có thể viết một cái gì đó như:
My Face: image- http://here.there/bla.gif
Trong đó sẽ tạo ra HTML cho bạn như thế này:
<a class='image-link' title='My Face' href='http://here.there/bla.gif'>
<img alt='My Face' src='http://here.there/bla.gif' />
</a>
Có rất nhiều ngôn ngữ đánh dấu xung quanh, vì vậy chỉ cần chọn một ngôn ngữ phù hợp hơn với bạn và thêm các sửa đổi của riêng bạn. Ví dụ: GitHub sử dụng sửa đổi markdown
và mã để phân tích cú pháp chỉ là một số couple của dòng.
Một bất lợi là người dùng cần tìm hiểu ngôn ngữ và không phải là WYSIWYG.
Trân trọng,
Dmitriy.
Có một dự án tuyệt vời cho việc này. Nó thậm chí đã nhúng phân tích để chỉ cho phép youtube nhúng, ví dụ
- 1. Tên tập tin an toàn/cho phép của .NET
- 2. Ruby/Rails an toàn chủ đề
- 3. An toàn loại an toàn()
- 4. CSP: Cách cho phép không an toàn-eval cho một tiền tố URI cụ thể (Firefox)
- 5. nginx.conf cho api an toàn
- 6. Các kỹ thuật được khuyến nghị cho trường cập nhật nhúng Linux an toàn
- 7. Mã an toàn và không an toàn
- 8. Rails Hoạt động an toàn Chỉ mục Đặt
- 9. Regular Expression Sanitize (PHP)
- 10. tối ưu hóa gì là an toàn mà vẫn cho phép gỡ bỏ -assumenosideeffects
- 11. Tại sao git không cho phép tôi xóa một nhánh an toàn?
- 12. Mảng an toàn không có khóa an toàn
- 13. Làm thế nào để an toàn nhúng bất kỳ tập tin flash (swf)?
- 14. An toàn của log4net
- 15. Truyền an toàn cho bản đồ băm
- 16. Đánh dấu an toàn cho email HTML
- 17. Đá quý Ruby on Rails để làm cho mật khẩu an toàn hơn?
- 18. Thực hiện HTML5/Javascript Trong An iFrame An toàn
- 19. phát video an toàn html5?
- 20. Sự khác nhau giữa đề an toàn và an toàn
- 21. Chuỗi an toàn của Netty Channel.write có an toàn không?
- 22. Chủ đề an toàn và không an toàn của PHP cho Windows
- 23. NS: nhận phản hồi không an toàn; phụ huynh cho biết cần an toàn
- 24. Có an toàn cho init thread an toàn với VC2010 không?
- 25. Cách thực hiện thanh toán an toàn 3d an toàn
- 26. Cơ chế an toàn không an toàn Arduino
- 27. Biến an toàn phiên PHP an toàn như thế nào?
- 28. IFRAME an toàn được lồng trên trang không an toàn
- 29. Trộn các kênh an toàn & không an toàn
- 30. Đăng nhập an toàn
Bạn có gợi ý rằng một cái gì đó giống như markdown không đòi hỏi bất kỳ điều kiện vệ sinh nào? – Noz
@Noz không, tôi không có. –