sanitize-html là khoan dung. Nó rất phù hợp để dọn dẹp các đoạn HTML chẳng hạn như các đoạn được tạo bởi CKEditor và các trình soạn thảo văn bản đa dạng thức khác. Nó đặc biệt tiện dụng để loại bỏ CSS không mong muốn khi sao chép và dán từ Word
sanitize-html cho phép bạn chỉ định các thẻ bạn muốn cho phép và các thuộc tính được phép cho từng thẻ đó
Nếu thẻ không được phép, nội dung của thẻ sẽ không bị loại bỏ. Có một số ngoại lệ đối với điều này, được thảo luận bên dưới trong phần "Loại bỏ toàn bộ nội dung của thẻ không được phép"
Cú pháp của các phần tử
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];8 và
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];9 đóng kém được làm sạch
Thuộc tính
npm install sanitize-html0 được xác thực để đảm bảo chúng chỉ chứa các URL
npm install sanitize-html1,
npm install sanitize-html2,
npm install sanitize-html3 và
npm install sanitize-html4. URL tương đối cũng được cho phép. Ditto cho các thuộc tính
npm install sanitize-html5
Cho phép các url cụ thể dưới dạng
npm install sanitize-html5 đối với thẻ iframe bằng cách lọc tên máy chủ cũng được hỗ trợ
Nhận xét HTML không được lưu giữ. Ngoài ra,
npm install sanitize-html7 thoát khỏi TẤT CẢ nội dung văn bản - điều này có nghĩa là các ký hiệu và, lớn hơn và nhỏ hơn được chuyển đổi thành tham chiếu ký tự HTML tương đương của chúng [
npm install sanitize-html8 -->
npm install sanitize-html9,
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];20 -->
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];21, v.v.]. Ngoài ra, trong các giá trị thuộc tính, dấu ngoặc kép cũng được thoát ra [
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];22 -->
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];23]
Yêu cầu
sanitize-html được thiết kế để sử dụng với Node. js và hỗ trợ Node 10+. Tất cả các phụ thuộc npm của nó là JavaScript thuần túy. sanitize-html được xây dựng trên mô-đun
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];24 xuất sắc
Về TypeScript
sanitize-html không được viết bằng TypeScript và không có kế hoạch hỗ trợ trực tiếp nó. Tuy nhiên, có một định nghĩa đánh máy được cộng đồng hỗ trợ,
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];25
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];8
Nếu
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];26 không được đặt trong tệp
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];27 của bạn, bạn phải nhập nó bằng
npm install sanitize-html1
Bất kỳ câu hỏi hoặc vấn đề nào trong khi sử dụng
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];25 nên được chuyển đến những người bảo trì của nó theo chỉ dẫn của hướng dẫn đóng góp của dự án đó
Cách sử dụng
trình duyệt
Hãy suy nghĩ trước. tại sao bạn muốn sử dụng nó trong trình duyệt? . Bạn không thể khử trùng HTML để lưu trên máy chủ ở bất kỳ nơi nào khác ngoài máy chủ
Tuy nhiên, có lẽ bạn muốn hiển thị HTML đã được làm sạch ngay lập tức trong trình duyệt để xem trước. Hoặc yêu cầu trình duyệt thực hiện công việc khử trùng trên mỗi lần tải trang. Bạn có thể nếu bạn muốn
- Cài đặt gói
npm install sanitize-html
hoặc
npm install sanitize-html4
Sự thay đổi chính trong 2. phiên bản x của sanitize-html là nó không còn bao gồm bản dựng đã sẵn sàng để sử dụng trình duyệt. Các nhà phát triển dự kiến sẽ bao gồm sanitize-html trong các bản dựng dự án của họ [e. g. , webpack] giống như bất kỳ phần phụ thuộc nào khác. Vì vậy, trong khi sanitize-html không còn sẵn sàng để liên kết trực tiếp trong HTML, giờ đây các nhà phát triển có thể xử lý nó dễ dàng hơn theo nhu cầu của họ
Sau khi được xây dựng và liên kết trong trình duyệt với Javascript của dự án khác, nó có thể được sử dụng để làm sạch các chuỗi HTML trong mã giao diện người dùng
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];
Nút [Được khuyến nghị]
Cài đặt mô-đun từ bảng điều khiển
npm install sanitize-html
Nhập mô-đun
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];2
Sử dụng nó trong ứng dụng JavaScript của bạn
npm install sanitize-html8
Điều đó sẽ cho phép danh sách các thẻ và thuộc tính được phép mặc định của chúng tôi thông qua. Đó là một bộ đẹp, nhưng có lẽ không hoàn toàn như những gì bạn muốn. Cho nên
npm install sanitize-html9
bùng nổ
tùy chọn mặc định
npm install sanitize-html0
Các trường hợp sử dụng phổ biến
"Tôi thích bộ của bạn nhưng tôi muốn thêm một thẻ nữa. Có cách nào thuận tiện không?"
Chắc chắn rồi
npm install sanitize-html10
Nếu bạn không chỉ định
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];29 hoặc
npm install sanitize-html80, danh sách mặc định của chúng tôi sẽ được áp dụng. Vì vậy, nếu bạn thực sự muốn có một danh sách trống, hãy chỉ định một
"Nếu tôi muốn cho phép tất cả các thẻ hoặc tất cả các thuộc tính thì sao?"
Giản dị. Thay vì để
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];29 hoặc
npm install sanitize-html80 ngoài các tùy chọn, hãy đặt một hoặc cả hai thành
npm install sanitize-html83
npm install sanitize-html11
"Nếu tôi không muốn cho phép bất kỳ thẻ nào thì sao?"
Cũng đơn giản. Đặt
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];29 thành
npm install sanitize-html85 và
npm install sanitize-html80 thành
npm install sanitize-html87
npm install sanitize-html12
"Điều gì xảy ra nếu tôi muốn các thẻ không được phép thoát thay vì bị loại bỏ?"
Nếu bạn đặt
npm install sanitize-html88 thành
npm install sanitize-html89 [mặc định], các thẻ không được phép sẽ bị loại bỏ. Mọi nội dung văn bản hoặc thẻ phụ vẫn được bao gồm, tùy thuộc vào việc các thẻ phụ riêng lẻ có được phép hay không
Nếu bạn đặt
npm install sanitize-html88 thành
npm install sanitize-html91, các thẻ không được phép sẽ được thoát thay vì bị loại bỏ. Mọi văn bản hoặc thẻ phụ đều được xử lý bình thường
Nếu bạn đặt
npm install sanitize-html88 thành
npm install sanitize-html93, các thẻ không được phép sẽ được thoát thay vì bị loại bỏ và cách xử lý tương tự được áp dụng cho tất cả các thẻ phụ, cho dù có được phép hay không
"Nếu tôi chỉ muốn cho phép các giá trị cụ thể trên một số thuộc tính thì sao?"
Khi định cấu hình thuộc tính trong
npm install sanitize-html80, chỉ cần sử dụng một đối tượng có thuộc tính
npm install sanitize-html95 và một mảng
npm install sanitize-html96 được phép. Trong ví dụ sau,
npm install sanitize-html97 sẽ trở thành
npm install sanitize-html98
npm install sanitize-html13
Với
npm install sanitize-html99, một số giá trị được phép có thể xuất hiện trong cùng một thuộc tính, được phân tách bằng dấu cách. Mặt khác, thuộc tính phải khớp chính xác với một và chỉ một trong các giá trị được phép
Ký tự đại diện cho các thuộc tính
Bạn có thể sử dụng ký tự đại diện
npm install sanitize-html00 để cho phép tất cả các thuộc tính có tiền tố nhất định
npm install sanitize-html14
Ngoài ra, bạn có thể sử dụng
npm install sanitize-html00 làm tên cho thẻ, để cho phép các thuộc tính được liệt kê có hiệu lực đối với bất kỳ thẻ nào
npm install sanitize-html15
Tùy chọn bổ sung
Các lớp CSS được phép
Nếu bạn muốn cho phép các lớp CSS cụ thể trên một phần tử cụ thể, bạn có thể làm như vậy với tùy chọn
npm install sanitize-html02. Bất kỳ lớp CSS nào khác đều bị loại bỏ
Điều này ngụ ý rằng thuộc tính
npm install sanitize-html03 được cho phép trên phần tử đó
npm install sanitize-html16
Tương tự như
npm install sanitize-html80, bạn có thể sử dụng
npm install sanitize-html00 để cho phép các lớp có tiền tố nhất định hoặc sử dụng
npm install sanitize-html00 làm tên thẻ để cho phép các lớp được liệt kê có giá trị đối với bất kỳ thẻ nào
npm install sanitize-html17
Hơn nữa, các biểu thức chính quy cũng được hỗ trợ
npm install sanitize-html18
Ghi chú. Chúng tôi khuyên rằng các biểu thức chính quy của bạn luôn bắt đầu bằng
npm install sanitize-html07 để bạn yêu cầu một tiền tố đã biết. Một biểu thức chính quy không cónpm install sanitize-html07 haynpm install sanitize-html09 chỉ yêu cầu một cái gì đó xuất hiện ở giữa
Kiểu CSS được phép
Nếu bạn muốn cho phép các kiểu CSS cụ thể trên một phần tử cụ thể, bạn có thể làm điều đó với tùy chọn
npm install sanitize-html100. Chỉ cần khai báo các thuộc tính mong muốn của bạn dưới dạng các tùy chọn biểu thức chính quy trong một mảng cho thuộc tính đã cho. Các phần tử cụ thể sẽ kế thừa các thuộc tính trong danh sách cho phép từ thuộc tính toàn cầu [
npm install sanitize-html00]. Bất kỳ lớp CSS nào khác đều bị loại bỏ
Bạn cũng phải sử dụng
npm install sanitize-html80 để kích hoạt thuộc tính
npm install sanitize-html103 cho các phần tử liên quan. Nếu không thì tính năng này sẽ không bao giờ phát huy tác dụng
Khi xây dựng biểu thức chính quy, đừng quên
npm install sanitize-html07 và
npm install sanitize-html09. Không đủ để nói "chuỗi nên chứa cái này. " Cũng phải nói " và chỉ cái này thôi. "
Các URL ở kiểu nội tuyến KHÔNG được lọc bởi bất kỳ cơ chế nào ngoài cụm từ thông dụng của bạn
npm install sanitize-html19
Loại bỏ văn bản bên ngoài các thẻ npm install sanitize-html
106
Một số ứng dụng chỉnh sửa văn bản tạo HTML để cho phép sao chép sang ứng dụng web. Đôi khi chúng có thể bao gồm các ký tự điều khiển không mong muốn sau khi kết thúc thẻ
npm install sanitize-html107. Theo mặc định, sanitize-html sẽ không loại bỏ các ký tự này, thay vào đó trả về chúng trong chuỗi đã được làm sạch. Hành vi này có thể được sửa đổi bằng cách sử dụng tùy chọn
npm install sanitize-html108
Đặt tùy chọn này thành true sẽ hướng dẫn sanitize-html loại bỏ tất cả các ký tự bên ngoài ranh giới thẻ
npm install sanitize-html107 -- trước thẻ
npm install sanitize-html110 và sau thẻ
npm install sanitize-html111
npm install sanitize-html0
htmlparser2 Tùy chọn
sanitize-html được xây dựng trên
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];24. Theo mặc định, tùy chọn duy nhất được truyền xuống là
npm install sanitize-html113. Bạn có thể đặt các tùy chọn để vượt qua bằng cách sử dụng tùy chọn trình phân tích cú pháp
lưu ý bảo mật. thay đổi cài đặt
npm install sanitize-html114 có thể gặp rủi ro. Đặc biệt,
npm install sanitize-html115 đã biết các mối lo ngại về bảo mật và không tồn tại bộ thử nghiệm hoàn chỉnh cho mọi kết hợp cài đặt có thể có khi được sử dụng với
npm install sanitize-html7. Nếu mục tiêu của bạn là bảo mật, chúng tôi khuyên bạn nên sử dụng các giá trị mặc định thay vì thay đổi
npm install sanitize-html114, ngoại trừ tùy chọn
npm install sanitize-html118
npm install sanitize-html1
Xem wiki htmlparser2 để biết danh sách đầy đủ các tùy chọn có thể
phép biến hình
Nếu bạn muốn thêm hoặc thay đổi một thuộc tính thì sao?
Cách dễ nhất [sẽ thay đổi tất cả các thẻ
npm install sanitize-html119 thành thẻ
npm install sanitize-html120]
npm install sanitize-html2
Cách sử dụng tiên tiến nhất
npm install sanitize-html3
Bạn có thể chỉ định ký tự đại diện
npm install sanitize-html00 thay vì tên thẻ để chuyển đổi tất cả các thẻ
Ngoài ra còn có một phương thức trợ giúp đủ cho các trường hợp đơn giản mà bạn muốn thay đổi thẻ và/hoặc thêm một số thuộc tính
npm install sanitize-html4
Phương thức trợ giúp
npm install sanitize-html122 có 3 tham số
npm install sanitize-html5
Tham số cuối cùng [
npm install sanitize-html123] được đặt thành
npm install sanitize-html124 theo mặc định. Khi
npm install sanitize-html124,
npm install sanitize-html122 sẽ hợp nhất các thuộc tính hiện tại với các thuộc tính mới [
npm install sanitize-html127]. Khi
npm install sanitize-html83, tất cả các thuộc tính hiện có sẽ bị loại bỏ
Bạn cũng có thể thêm hoặc sửa đổi nội dung văn bản của thẻ
npm install sanitize-html6
Ví dụ: bạn có thể chuyển đổi một phần tử liên kết có văn bản neo bị thiếu
npm install sanitize-html7
Đến một liên kết có anchor text
npm install sanitize-html8
bộ lọc
Bạn có thể cung cấp chức năng lọc để xóa các thẻ không mong muốn. Giả sử chúng ta cần xóa các thẻ
npm install sanitize-html129 trống như
npm install sanitize-html9
Chúng ta có thể làm điều đó với bộ lọc sau
npm install sanitize-html40
Đối tượng
npm install sanitize-html130 được cung cấp cho cuộc gọi lại cung cấp các thuộc tính sau
npm install sanitize-html
131. Tên thẻ, tôi. e.npm install sanitize-html
132npm install sanitize-html
133. Thuộc tính của thẻ, tôi. e.npm install sanitize-html
134npm install sanitize-html
135. Nội dung văn bản của thẻnpm install sanitize-html
136. Các thẻ con ngay lập tức có khả năng đại diện cho phương tiện độc lập [e. g. ,import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];
9,npm install sanitize-html
138,npm install sanitize-html
139,npm install sanitize-html
140]. Xem biếnnpm install sanitize-html
141 trongnpm install sanitize-html
142 để biết danh sách đầy đủnpm install sanitize-html
143. Chỉ mục vị trí của thẻ trong chuỗi kết quả
Bạn cũng có thể xử lý tất cả nội dung văn bản bằng chức năng bộ lọc được cung cấp. Giả sử chúng ta muốn có dấu chấm lửng thay vì dấu ba chấm
npm install sanitize-html41
Chúng ta có thể làm điều đó với bộ lọc sau
npm install sanitize-html42
Lưu ý rằng văn bản được chuyển đến phương thức
npm install sanitize-html144 đã được thoát để hiển thị an toàn dưới dạng HTML. Bạn có thể thêm đánh dấu và sử dụng chuỗi thoát thực thể trong
npm install sanitize-html144 của mình
Bộ lọc khung nội tuyến
Nếu muốn cho phép các thẻ iframe nhưng muốn kiểm soát các miền được phép thông qua, bạn có thể cung cấp một mảng tên máy chủ và/hoặc mảng các miền mà bạn muốn cho phép làm nguồn iframe. Tên máy chủ này là một thuộc tính trong đối tượng tùy chọn được truyền dưới dạng đối số cho hàm sanitize-html
Các mảng này sẽ được kiểm tra đối với html được chuyển đến hàm và chỉ trả về 25 url bao gồm tên máy chủ hoặc miền được phép trong đối tượng. Url trong html được chuyển phải được định dạng chính xác [tên máy chủ hợp lệ] dưới dạng iframe được nhúng nếu không mô-đun sẽ loại bỏ src khỏi iframe
Đảm bảo chuyển tên máy chủ hợp lệ cùng với miền bạn muốn cho phép, tôi. e
npm install sanitize-html43
Bạn cũng có thể chỉ định có cho phép các URL tương đối làm nguồn iframe hay không
npm install sanitize-html44
Lưu ý rằng nếu không được chỉ định, các URL tương đối sẽ được phép theo mặc định nếu không cung cấp bộ lọc tên máy chủ hoặc tên miền nhưng bị xóa theo mặc định nếu bộ lọc tên máy chủ hoặc tên miền được cung cấp
Hãy nhớ rằng thẻ
npm install sanitize-html140 phải được cho phép cũng như thuộc tính
npm install sanitize-html5
Ví dụ
npm install sanitize-html45
sẽ đi qua như an toàn trong khi
npm install sanitize-html46
hoặc
npm install sanitize-html47
sẽ trả về một thẻ khung nội tuyến trống
Nếu bạn muốn cho phép bất kỳ tên miền phụ nào ở mọi cấp độ, bạn có thể cung cấp tên miền trong
npm install sanitize-html149
npm install sanitize-html48
Bộ lọc tập lệnh
Tương tự như iframe, bạn có thể cho phép thẻ tập lệnh trên danh sách các miền có trong danh sách cho phép
npm install sanitize-html49
Bạn cũng có thể cho phép thẻ tập lệnh trong danh sách tên máy chủ có trong danh sách cho phép
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];0
Lược đồ URL được phép
Theo mặc định, chúng tôi cho phép các sơ đồ URL sau đây trong trường hợp
npm install sanitize-html0,
npm install sanitize-html5, v.v. được cho phép
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];1
Bạn có thể ghi đè lên điều này nếu bạn muốn
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];2
Bạn cũng có thể chỉ cho phép lược đồ cho một thẻ cụ thể
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];3
Và bạn có thể cấm sử dụng các URL liên quan đến giao thức [bắt đầu bằng
npm install sanitize-html152] để truy cập một trang web khác bằng giao thức hiện tại, giao thức này được cho phép theo mặc định
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];4
Loại bỏ toàn bộ nội dung của thẻ không được phép
Thông thường, với một vài ngoại lệ, nếu một thẻ không được phép, tất cả văn bản bên trong nó sẽ được giữ nguyên và mọi thẻ được phép bên trong nó cũng vậy
Các trường hợp ngoại lệ là
npm install sanitize-html103,
npm install sanitize-html154,
npm install sanitize-html155,
npm install sanitize-html156
Ví dụ: nếu bạn muốn thay thế danh sách này để loại bỏ bất kỳ nội dung nào được tìm thấy bên trong thẻ
npm install sanitize-html157, hãy sử dụng tùy chọn
npm install sanitize-html158
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];5
Lưu ý rằng nếu bạn sử dụng tùy chọn này, bạn có trách nhiệm nêu toàn bộ danh sách. Điều này cho phép bạn giữ lại nội dung của
npm install sanitize-html155, nếu bạn muốn
Nội dung vẫn được thoát đúng cách, ngoại trừ các thẻ
npm install sanitize-html154 và
npm install sanitize-html103. Việc cho phép
npm install sanitize-html154 hoặc
npm install sanitize-html103 khiến bạn dễ bị tấn công XSS. Đừng làm vậy trừ khi bạn có lý do chính đáng để tin tưởng vào nguồn gốc của chúng. sanitize-html sẽ ghi cảnh báo nếu các thẻ này được cho phép, có thể tắt cảnh báo này bằng tùy chọn
npm install sanitize-html164
Chọn những việc cần làm với các thẻ không được phép
Thay vì loại bỏ hoặc chỉ giữ lại văn bản, bạn có thể kích hoạt thoát toàn bộ nội dung
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];6
Điều này sẽ biến đổi
npm install sanitize-html165 thành
npm install sanitize-html166
Giá trị hợp lệ là.
npm install sanitize-html167 [mặc định],
npm install sanitize-html168 [thoát khỏi thẻ] và
npm install sanitize-html169 [để thoát khỏi thẻ và tất cả nội dung của nó]
Hạn chế làm tổ sâu
Bạn có thể giới hạn độ sâu của các thẻ HTML trong tài liệu bằng tùy chọn
npm install sanitize-html170
import sanitizeHtml from 'sanitize-html'; const html = "hello world"; console.log[sanitizeHtml[html]]; console.log[sanitizeHtml[""]]; console.log[sanitizeHtml["console.log['hello world']"]]; console.log[sanitizeHtml["alert['hello world']"]];7
Điều này sẽ ngăn người dùng lồng các thẻ sâu hơn 6 cấp độ. Các thẻ sâu hơn sẽ bị loại bỏ chính xác như thể chúng không được phép. Lưu ý rằng điều này có nghĩa là văn bản được giữ nguyên theo những cách thông thường khi thích hợp
Giới thiệu về dấu nháy đơnCMS
sanitize-html đã được tạo tại P'unk Avenue để sử dụng trong ApostropheCMS, một hệ thống quản lý nội dung nguồn mở được xây dựng trên Node. js. Nếu bạn thích sanitize-html, bạn chắc chắn nên xem ApostropheCMS