2017-11-05 71 views
8

Nhiều trình chỉnh sửa như cung cấp Phương tiện định dạng ngay bây giờ. Từ những gì tôi thấy trong DOM nó chỉ đơn giản là thêm HTML. Nhưng làm thế nào để bạn khử trùng loại đầu vào này mà không làm mất định dạng được người dùng áp dụng?Cách xử lý khử trùng trong trình chỉnh sửa JavaScript cho phép định dạng

Ví dụ: nhấn đậm thêm:

<strong class="markup--strong markup--p-strong">text</strong>

nhưng bạn sẽ không muốn để render nếu người dùng nhập mà tự. Vậy khác nhau thế nào? Ngoài ra điều đó sẽ khác nếu bạn có phong cách với markdown nhưng cũng không cho phép người dùng nhập markdown của riêng họ nhưng làm cho nó chỉ có thể truy cập thông qua trình duyệt?

Một cách tôi có thể nghĩ đến là, thoát từng ký tự đặc biệt HTML, nhưng điều đó có vẻ lạ. Theo như tôi biết bạn khử trùng nội dung chỉ khi xuất nó

+0

Bạn phải tìm nguồn - vì vậy cụ thể là bạn đề cập đến phương tiện? sử dụng công cụ dev để tìm vị trí trong JS đang bị nhổ ra rồi làm lệch hướng nó –

Trả lời

3

Bạn sử dụng máy làm sạch bên máy chủ, như đã nêu trong Vipin vì việc xác thực phía máy khách dễ bị giả mạo. OWASP (Dự án bảo mật ứng dụng web mở) có một số hướng dẫn và chất vệ sinh mà bạn có thể sử dụng như java-html-sanitizer.

Để biết tóm tắt chung về khái niệm, vui lòng đọc phần này https://www.owasp.org/index.php/Data_Validation trong phần Sanitize.

1

Bạn có thể thay thế các yếu tố trắng liệt kê với nhân vật khác, ví dụ:

<strong.*> becomes |strong| 

Sau đó bạn loại bỏ TẤT CẢ HTML khác. Hãy nhận biết onmouseover = "alert (1)" để giữ cho nó thực sự đơn giản.

Cũng phải cẩn thận khi hiển thị thông tin nhập của người dùng. Không chỉ cần thêm nó như là mã. Thay vì phân tích nó và tạo ra các phần tử bằng cách sử dụng JavaScript. Không bao giờ sử dụng innerHTML, nhưng sử dụng .innerText và document.createElement().

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