Hướng dẫn module not found error can t resolve sanitize html - lỗi không tìm thấy mô-đun không thể giải quyết sanitize html

Này @abea. Cung cấp các chi tiết về cách tôi đang sử dụng nó trong Angular.

  1. Chạy lệnh trong thiết bị đầu cuối-
    yarn add sanitize-html
    
    6
  2. Nó thêm dòng sau vào gói tệp.json
    yarn add sanitize-html
    
    7
    yarn add sanitize-html
    
    7
  3. Tôi sử dụng nó trong mã của mình như:

import sanitizeHTML from 'sanitize-html'
const SANITIZATION_OPTIONS = {
  allowedTags: [
    'p', 'ul', 'ol', 'li', 'br', 'strong', 'sup', 'em', 'h2', 'h2', 'h3', 'h4', 'h5', 'h6', 'pre', 'img'
  ],
  allowedAttributes: {
    '*': ['style', 'class', 'data-mce-style', 'data-mce-bogus'],
    img: ['src', 'alt']
  },
  allowedStyles: {
    '*': {
      'text-align': [/^left$/, /^right$/, /^center$/, /^justify$/],
      margin: [/^\d+in$/],
      padding: [/^\d+px$/],
      'font-size': [/^\d+pt$/],
      'font-family': [/^Calibri,\ssans-serif$/],
      'list-style-type': [/^circle$/, /^square$/, /^lower-alpha$/, /^lower-greek$/, /^lower-roman$/]
    },
  },
  disallowedTagsMode: 'escape',
}
const sanitizedMessage = sanitizeHTML('

Hello there testing!

', SANITIZATION_OPTIONS);

  1. Mặc dù, chức năng đang hoạt động trong mã. Nhưng, bây giờ chạy
    yarn add sanitize-html
    
    8. Nó hiển thị lỗi dưới đây.

Hướng dẫn module not found error can t resolve sanitize html - lỗi không tìm thấy mô-đun không thể giải quyết sanitize html

Xin lưu ý: Đảm bảo rằng lỗi tồn tại trong cấp độ bản vá mới nhất của dự án. Chẳng hạn, nếu bạn đang chạy phiên bản apostrophe 2.x, bạn nên sử dụng phiên bản mới nhất trong phiên bản chính đó để xác nhận lỗi.

Để sinh sản

Hướng dẫn từng bước để tái tạo hành vi:

Sau khi cài đặt gói tiếp theo: "@type/sanitize-html": "1.27.0", "sanitize-html": "2.2.0",
"@types/sanitize-html": "1.27.0",
"sanitize-html": "2.2.0",

Và trong nhập thành phần góc

Nhập SANITIZEHTML từ 'Sanitize-HTML';

ngonInit (): void {super.ngoninit (); const html = 'Hello World'; Console.log ('vệ sinh', sanitizehtml (html)); }
super.ngOnInit();
const html = 'hello world';
console.log('sanitize', sanitizeHtml(html));
}

Lỗi trong.
Module not found: Error: Can't resolve 'path' in '\node_modules\sanitize-html\node_modules\postcss\lib'

Lỗi trong.
Module not found: Error: Can't resolve 'path' in '\node_modules\sanitize-html\node_modules\postcss\lib'

Lỗi trong.
Module not found: Error: Can't resolve 'path' in '\node_modules\sanitize-html\node_modules\postcss\lib'

Mô tả lỗi

v10.20.1

Phiên bản của Node.js: V10.20.1
v10.20.1

Hệ điều hành máy chủ: Windows
Windows

Bối cảnh bổ sung: Chrome
Chrome

Hành vi mong đợi:

Không ném ngoại lệ.

sanitize-html

Hướng dẫn module not found error can t resolve sanitize html - lỗi không tìm thấy mô-đun không thể giải quyết sanitize html

Sanitize-HTML cung cấp chất khử trùng HTML đơn giản với API rõ ràng.

vệ sinh-HTML có khả năng chịu đựng. Nó rất phù hợp để làm sạch các mảnh HTML như các mảnh được tạo bởi CKeditor và các biên tập viên văn bản phong phú 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 mỗi thẻ đó.

Nếu một thẻ không được phép, nội dung của thẻ không bị loại bỏ. Có một số ngoại lệ cho điều này, được thảo luận dưới đây trong phần "Vứt bỏ toàn bộ nội dung của một thẻ không được phép".

Cú pháp của các yếu tố

yarn add sanitize-html
9 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(""));
0 được đóng lại kém được làm sạch.

Các thuộc tí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(""));
1 được xác thực để đảm bảo chúng chỉ chứa
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(""));
2,
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(""));
3,
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(""));
4 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(""));
5 URL. URL tương đối cũng được cho phép. Ditto cho các thuộc tí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(""));
6.

Cho phép các URL cụ thể dướ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(""));
6 cho 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 bảo tồn. Ngoài 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(""));
8 thoát khỏi tất cả các nội dung văn bản-điều này có nghĩa là các dấu hiệu ampersand, lớn hơn và ít hơn so với các dấu hiệu được chuyển đổi thành tham chiếu ký tự HTML tương đương của chú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(""));
9->
npm install sanitize-html
0,
npm install sanitize-html
1->
npm install sanitize-html
2, v.v.). Ngoài ra, trong các giá trị thuộc tính, các dấu ngoặc kép cũng được thoát (
npm install sanitize-html
3 ->
npm install sanitize-html
4).

Yêu cầu

Sanitize-HTML được dự định để 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

npm install sanitize-html
5 tuyệt vời.

Liên quan đến TypeScript

Sanitize-HTML không được viết bằng TypeScript và không có kế hoạch hỗ trợ trực tiếp. Tuy nhiên, có một định nghĩa gõ được hỗ trợ cộng đồng,

npm install sanitize-html
6.

npm install -D @types/sanitize-html

Nếu

npm install sanitize-html
7 không được đặt trong tệp
npm install sanitize-html
8 của bạn, bạn phải nhập nó với:

import * as sanitizeHtml from 'sanitize-html';

Bất kỳ câu hỏi hoặc vấn đề nào trong khi sử dụng

npm install sanitize-html
6 nên được hướng đến những người duy trì theo chỉ dẫn của các hướng dẫn đóng góp của dự án đó.

Cách sử dụng

Trình duyệt

Hãy nghĩ trước: Tại sao bạn muốn sử dụng nó trong trình duyệt? Hãy nhớ rằng, máy chủ không bao giờ tin tưởng các trình duyệt. Bạn không thể vệ sinh HTML để lưu trên máy chủ ở bất cứ nơi nào khác ngoài trên máy chủ.

Nhưng, có lẽ bạn muốn hiển thị HTML được khử trùng 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 vệ sinh trên mỗi tải trang. Bạn có thể nếu bạn muốn!

  • Cài đặt gói:

npm install sanitize-html

hoặc

yarn add sanitize-html

Thay đổi chính trong phiên bản 2.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ọ (ví dụ: trang web) vì họ sẽ phụ thuộc 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, các nhà phát triển giờ đây có thể dễ dàng xử lý 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 các JavaScript dự án khác, nó có thể được sử dụng để vệ sinh chuỗi HTML trong mã đầu tiê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(""));

Nút (được đề xuất)

Cài đặt mô -đun từ bảng điều khiển:

npm install sanitize-html

Nhập mô -đun:

// In ES modules
import sanitizeHtml from 'sanitize-html';

// Or in CommonJS
const sanitizeHtml = require('sanitize-html');

Sử dụng nó trong ứng dụng JavaScript của bạn:

const dirty = 'some really tacky HTML';
const clean = sanitizeHtml(dirty);

Điều đó sẽ cho phép danh sách mặc định của chúng tôi các thẻ và thuộc tính được phép thông qua. Đó là một bộ đẹp, nhưng có lẽ không hoàn toàn những gì bạn muốn. Vì thế:

// Allow only a super restricted set of tags and attributes
const clean = sanitizeHtml(dirty, {
  allowedTags: [ 'b', 'i', 'em', 'strong', 'a' ],
  allowedAttributes: {
    'a': [ 'href' ]
  },
  allowedIframeHostnames: ['www.youtube.com']
});

Boom!

Tùy chọn mặc định

npm install -D @types/sanitize-html
0

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?"

Sure:

npm install -D @types/sanitize-html
1

Nếu bạn không chỉ định

// In ES modules
import sanitizeHtml from 'sanitize-html';

// Or in CommonJS
const sanitizeHtml = require('sanitize-html');
0 hoặc
// In ES modules
import sanitizeHtml from 'sanitize-html';

// Or in CommonJS
const sanitizeHtml = require('sanitize-html');
1, danh sách mặc định của chúng tôi được áp dụng. Vì vậy, nếu bạn thực sự muốn một danh sách trống, chỉ định một.

"Điều gì sẽ xảy ra 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?"

Giản dị! Thay vì rời khỏi

// In ES modules
import sanitizeHtml from 'sanitize-html';

// Or in CommonJS
const sanitizeHtml = require('sanitize-html');
0 hoặc
// In ES modules
import sanitizeHtml from 'sanitize-html';

// Or in CommonJS
const sanitizeHtml = require('sanitize-html');
1 ra khỏi các tùy chọn, hãy đặt một hoặc cả hai thành
// In ES modules
import sanitizeHtml from 'sanitize-html';

// Or in CommonJS
const sanitizeHtml = require('sanitize-html');
4:

npm install -D @types/sanitize-html
2

"Điều gì sẽ xảy ra nếu tôi không muốn cho phép bất kỳ thẻ nào?"

Cũng đơn giản! Đặt

// In ES modules
import sanitizeHtml from 'sanitize-html';

// Or in CommonJS
const sanitizeHtml = require('sanitize-html');
0 thành
// In ES modules
import sanitizeHtml from 'sanitize-html';

// Or in CommonJS
const sanitizeHtml = require('sanitize-html');
6 và
// In ES modules
import sanitizeHtml from 'sanitize-html';

// Or in CommonJS
const sanitizeHtml = require('sanitize-html');
1 thành
// In ES modules
import sanitizeHtml from 'sanitize-html';

// Or in CommonJS
const sanitizeHtml = require('sanitize-html');
8.

npm install -D @types/sanitize-html
3

"Điều gì sẽ xảy ra nếu tôi muốn các thẻ không cho phép được thoát ra thay vì bị loại bỏ?"

Nếu bạn đặt

// In ES modules
import sanitizeHtml from 'sanitize-html';

// Or in CommonJS
const sanitizeHtml = require('sanitize-html');
9 thành
const dirty = 'some really tacky HTML';
const clean = sanitizeHtml(dirty);
0 (mặc định), các thẻ không được phép sẽ bị loại bỏ. Bất kỳ nội dung văn bản hoặc phụ vẫn được bao gồm, tùy thuộc vào việc các phân chia riêng lẻ có được phép hay không.

Nếu bạn đặt

// In ES modules
import sanitizeHtml from 'sanitize-html';

// Or in CommonJS
const sanitizeHtml = require('sanitize-html');
9 thành
const dirty = 'some really tacky HTML';
const clean = sanitizeHtml(dirty);
2, các thẻ không được phép được thoát ra thay vì loại bỏ. Bất kỳ văn bản hoặc phụ được xử lý bình thường.

Nếu bạn đặt

// In ES modules
import sanitizeHtml from 'sanitize-html';

// Or in CommonJS
const sanitizeHtml = require('sanitize-html');
9 thành
const dirty = 'some really tacky HTML';
const clean = sanitizeHtml(dirty);
4, các thẻ không được phép được thoát ra thay vì loại bỏ và điều trị tương tự được áp dụng cho tất cả các khoản phụ, dù có được phép hay không.

"Điều gì sẽ xảy ra nếu tôi chỉ cho phép các giá trị cụ thể trên một số thuộc tính?"

Khi định cấu hình thuộc tính trong

// In ES modules
import sanitizeHtml from 'sanitize-html';

// Or in CommonJS
const sanitizeHtml = require('sanitize-html');
1 chỉ cần sử dụng một đối tượng với thuộc tính
const dirty = 'some really tacky HTML';
const clean = sanitizeHtml(dirty);
6 và mảng
const dirty = 'some really tacky HTML';
const clean = sanitizeHtml(dirty);
7 được phép. Trong ví dụ sau
const dirty = 'some really tacky HTML';
const clean = sanitizeHtml(dirty);
8 sẽ trở thành
const dirty = 'some really tacky HTML';
const clean = sanitizeHtml(dirty);
9:

npm install -D @types/sanitize-html
4

Với

// Allow only a super restricted set of tags and attributes
const clean = sanitizeHtml(dirty, {
  allowedTags: [ 'b', 'i', 'em', 'strong', 'a' ],
  allowedAttributes: {
    'a': [ 'href' ]
  },
  allowedIframeHostnames: ['www.youtube.com']
});
0, 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 khoảng trắng. Nếu không, 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.

HOA HỒNG cho các thuộc tính

Bạn có thể sử dụng ký tự đại diện

// Allow only a super restricted set of tags and attributes
const clean = sanitizeHtml(dirty, {
  allowedTags: [ 'b', 'i', 'em', 'strong', 'a' ],
  allowedAttributes: {
    'a': [ 'href' ]
  },
  allowedIframeHostnames: ['www.youtube.com']
});
1 để cho phép tất cả các thuộc tính với một tiền tố nhất định:

npm install -D @types/sanitize-html
5

Ngoài ra, bạn có thể sử dụng

// Allow only a super restricted set of tags and attributes
const clean = sanitizeHtml(dirty, {
  allowedTags: [ 'b', 'i', 'em', 'strong', 'a' ],
  allowedAttributes: {
    'a': [ 'href' ]
  },
  allowedIframeHostnames: ['www.youtube.com']
});
1 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 -D @types/sanitize-html
6

Tùy chọn bổ sung

Cho phép các lớp CSS

Nếu bạn muốn cho phép các lớp CSS cụ thể trên một yếu tố cụ thể, bạn có thể làm như vậy với tùy chọn

// Allow only a super restricted set of tags and attributes
const clean = sanitizeHtml(dirty, {
  allowedTags: [ 'b', 'i', 'em', 'strong', 'a' ],
  allowedAttributes: {
    'a': [ 'href' ]
  },
  allowedIframeHostnames: ['www.youtube.com']
});
3. Bất kỳ lớp CSS khác đều bị loại bỏ.

Điều này ngụ ý rằng thuộc tính

// Allow only a super restricted set of tags and attributes
const clean = sanitizeHtml(dirty, {
  allowedTags: [ 'b', 'i', 'em', 'strong', 'a' ],
  allowedAttributes: {
    'a': [ 'href' ]
  },
  allowedIframeHostnames: ['www.youtube.com']
});
4 được cho phép trên phần tử đó.

npm install -D @types/sanitize-html
7

Tương tự như

// In ES modules
import sanitizeHtml from 'sanitize-html';

// Or in CommonJS
const sanitizeHtml = require('sanitize-html');
1, bạn có thể sử dụng
// Allow only a super restricted set of tags and attributes
const clean = sanitizeHtml(dirty, {
  allowedTags: [ 'b', 'i', 'em', 'strong', 'a' ],
  allowedAttributes: {
    'a': [ 'href' ]
  },
  allowedIframeHostnames: ['www.youtube.com']
});
1 để cho phép các lớp có tiền tố nhất định hoặc sử dụng
// Allow only a super restricted set of tags and attributes
const clean = sanitizeHtml(dirty, {
  allowedTags: [ 'b', 'i', 'em', 'strong', 'a' ],
  allowedAttributes: {
    'a': [ 'href' ]
  },
  allowedIframeHostnames: ['www.youtube.com']
});
1 làm tên thẻ để cho phép các lớp được liệt kê có hiệu lực đối với bất kỳ thẻ nào:

npm install -D @types/sanitize-html
8

Hơn nữa, các biểu thức thông thường cũng được hỗ trợ:

npm install -D @types/sanitize-html
9

Lưu ý: Chúng tôi khuyên rằng các biểu thức thông thường của bạn luôn bắt đầu bằng

// Allow only a super restricted set of tags and attributes
const clean = sanitizeHtml(dirty, {
  allowedTags: [ 'b', 'i', 'em', 'strong', 'a' ],
  allowedAttributes: {
    'a': [ 'href' ]
  },
  allowedIframeHostnames: ['www.youtube.com']
});
8 để 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ó
// Allow only a super restricted set of tags and attributes
const clean = sanitizeHtml(dirty, {
  allowedTags: [ 'b', 'i', 'em', 'strong', 'a' ],
  allowedAttributes: {
    'a': [ 'href' ]
  },
  allowedIframeHostnames: ['www.youtube.com']
});
8 và
npm install -D @types/sanitize-html
00 chỉ yêu cầu một cái gì đó xuất hiện ở giữa.

Cho phép phong cách CSS

Nếu bạn muốn cho phép các kiểu CSS cụ thể trên một yếu tố cụ thể, bạn có thể thực hiện điều đó với tùy chọn

npm install -D @types/sanitize-html
01. Chỉ cần khai báo các thuộc tính mong muốn của bạn là các tùy chọn biểu thức thông thường trong một mảng cho thuộc tính đã cho. Các yếu tố cụ thể sẽ kế thừa các thuộc tính được liệt kê cho phép từ thuộc tính toàn cầu (
// Allow only a super restricted set of tags and attributes
const clean = sanitizeHtml(dirty, {
  allowedTags: [ 'b', 'i', 'em', 'strong', 'a' ],
  allowedAttributes: {
    'a': [ 'href' ]
  },
  allowedIframeHostnames: ['www.youtube.com']
});
1). Bất kỳ lớp CSS khác đều bị loại bỏ.

Bạn cũng phải sử dụng

// In ES modules
import sanitizeHtml from 'sanitize-html';

// Or in CommonJS
const sanitizeHtml = require('sanitize-html');
1 để kích hoạt thuộc tính
npm install -D @types/sanitize-html
04 cho các yếu tố có liên quan. Nếu không, tính năng này sẽ không bao giờ đi vào chơi.
to activate the
npm install -D @types/sanitize-html
04 attribute for the relevant elements. Otherwise this feature will never come into play.

Khi xây dựng các biểu thức chính quy, đừng quên

// Allow only a super restricted set of tags and attributes
const clean = sanitizeHtml(dirty, {
  allowedTags: [ 'b', 'i', 'em', 'strong', 'a' ],
  allowedAttributes: {
    'a': [ 'href' ]
  },
  allowedIframeHostnames: ['www.youtube.com']
});
8 và
npm install -D @types/sanitize-html
00. Không đủ để nói "Chuỗi nên chứa cái này." Nó cũng phải nói "và chỉ có điều này."
It's not enough to say "the string should contain this." It must also say "and only this."

URL theo kiểu nội tuyến không được lọc bởi bất kỳ cơ chế nào ngoài biểu thức thông thường của bạn.

import * as sanitizeHtml from 'sanitize-html';
0

Loại bỏ văn bản bên ngoài thẻ npm install -D @types/sanitize-html07

Một số ứng dụng chỉnh sửa văn bản tạo HTML để cho phép sao chép vào ứng dụng web. Chúng đôi khi có thể bao gồm các ký tự điều khiển không mong muốn sau khi chấm dứt thẻ

npm install -D @types/sanitize-html
08. Theo mặc định, Sanitize-HTML sẽ không loại bỏ các ký tự này, thay vào đó, trả lại chúng trong chuỗi khử trùng. Hành vi này có thể được sửa đổi bằng tùy chọn
npm install -D @types/sanitize-html
09.

Đặ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 -D @types/sanitize-html
08-trước
npm install -D @types/sanitize-html
11 và sau các thẻ
npm install -D @types/sanitize-html
12.

import * as sanitizeHtml from 'sanitize-html';
1

Tùy chọn HTMLPARSER2

Sanitize-HTML được xây dựng trên

npm install sanitize-html
5. Theo mặc định, tùy chọn duy nhất được truyền lại là
npm install -D @types/sanitize-html
14. 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 -D @types/sanitize-html
15 có thể gặp rủi ro. Cụ thể,
npm install -D @types/sanitize-html
16 đã biết các mối quan tâm về bảo mật và bộ thử nghiệm hoàn chỉnh không tồn tại cho mọi kết hợp có thể xảy ra của các cài đặt khi được sử dụng với
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(""));
8. Nếu bảo mật là mục tiêu của bạn, chúng tôi khuyên bạn nên sử dụng các mặc định thay vì thay đổi
npm install -D @types/sanitize-html
15, ngoại trừ tùy chọn
npm install -D @types/sanitize-html
19.
In particular,
npm install -D @types/sanitize-html
16 has known security concerns and a complete test suite does not exist for every possible combination of settings when used with
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(""));
8. If security is your goal we recommend you use the defaults rather than changing
npm install -D @types/sanitize-html
15, except for the
npm install -D @types/sanitize-html
19 option.

import * as sanitizeHtml from 'sanitize-html';
2

Xem wiki HTMLPARSER2 để biết danh sách đầy đủ các tùy chọn có thể.

Biến đổi

Điều gì sẽ xảy ra nếu bạn muốn thêm hoặc thay đổi một thuộc tính? Điều gì sẽ xảy ra nếu bạn muốn chuyển đổi thẻ này sang thẻ khác? Không sao, nó đơn giản!

Cách dễ nhất (sẽ thay đổi tất cả các thẻ

npm install -D @types/sanitize-html
20 thành thẻ
npm install -D @types/sanitize-html
21):

import * as sanitizeHtml from 'sanitize-html';
3

Cách sử dụng tiên tiến nhất:

import * as sanitizeHtml from 'sanitize-html';
4

Bạn có thể chỉ định ký tự đại diện

// Allow only a super restricted set of tags and attributes
const clean = sanitizeHtml(dirty, {
  allowedTags: [ 'b', 'i', 'em', 'strong', 'a' ],
  allowedAttributes: {
    'a': [ 'href' ]
  },
  allowedIframeHostnames: ['www.youtube.com']
});
1 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 là đủ 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:

import * as sanitizeHtml from 'sanitize-html';
5

Phương pháp trợ giúp

npm install -D @types/sanitize-html
23 có 3 tham số:

import * as sanitizeHtml from 'sanitize-html';
6

Tham số cuối cùng (

npm install -D @types/sanitize-html
24) được đặt thành
npm install -D @types/sanitize-html
25 theo mặc định. Khi
npm install -D @types/sanitize-html
25,
npm install -D @types/sanitize-html
23 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 -D @types/sanitize-html
28). Khi
// In ES modules
import sanitizeHtml from 'sanitize-html';

// Or in CommonJS
const sanitizeHtml = require('sanitize-html');
4, tất cả các thuộc tính hiện có 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ẻ:

import * as sanitizeHtml from 'sanitize-html';
7

Ví dụ: bạn có thể chuyển đổi một phần tử liên kết với văn bản neo bị thiếu:

import * as sanitizeHtml from 'sanitize-html';
8

Đến một liên kết với văn bản neo:

import * as sanitizeHtml from 'sanitize-html';
9

Bộ lọc

Bạn có thể cung cấp một chức năng bộ 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 -D @types/sanitize-html
30 trống như:

Chúng ta có thể làm điều đó với bộ lọc sau:

npm install sanitize-html
0

Đối tượng

npm install -D @types/sanitize-html
31 được cung cấp cho cuộc gọi lại cung cấp các thuộc tính sau:

  • npm install -D @types/sanitize-html
    32: Tên thẻ, tức là
    npm install -D @types/sanitize-html
    33.
  • npm install -D @types/sanitize-html
    34: Các thuộc tính của thẻ, tức là
    npm install -D @types/sanitize-html
    35.
  • npm install -D @types/sanitize-html
    36: Nội dung văn bản của thẻ.
  • npm install -D @types/sanitize-html
    37: Thẻ con ngay lập tức có khả năng đại diện cho phương tiện khép kín (ví dụ:
    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(""));
    0,
    npm install -D @types/sanitize-html
    39,
    npm install -D @types/sanitize-html
    40,
    npm install -D @types/sanitize-html
    41). Xem biến
    npm install -D @types/sanitize-html
    42 trong
    npm install -D @types/sanitize-html
    43 để biết danh sách đầy đủ.
  • npm install -D @types/sanitize-html
    44: Chỉ mục của 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 với chức năng bộ lọc được cung cấp. Giả sử chúng tôi muốn một dấu chấm lửng thay vì ba chấm.

Chúng ta có thể làm điều đó với bộ lọc sau:

npm install sanitize-html
1

Đối tượng

npm install -D @types/sanitize-html
31 được cung cấp cho cuộc gọi lại cung cấp các thuộc tính sau:

npm install -D @types/sanitize-html32: Tên thẻ, tức là npm install -D @types/sanitize-html33.

npm install -D @types/sanitize-html
34: Các thuộc tính của thẻ, tức là
npm install -D @types/sanitize-html
35.

npm install -D @types/sanitize-html
36: Nội dung văn bản của thẻ.

npm install -D @types/sanitize-html
37: Thẻ con ngay lập tức có khả năng đại diện cho phương tiện khép kín (ví dụ:
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(""));
0,
npm install -D @types/sanitize-html
39,
npm install -D @types/sanitize-html
40,
npm install -D @types/sanitize-html
41). Xem biến
npm install -D @types/sanitize-html
42 trong
npm install -D @types/sanitize-html
43 để biết danh sách đầy đủ.

npm install sanitize-html
2

npm install -D @types/sanitize-html
44: Chỉ mục của vị trí của thẻ trong chuỗi kết quả.

npm install sanitize-html
3

Bạn cũng có thể xử lý tất cả nội dung văn bản với chức năng bộ lọc được cung cấp. Giả sử chúng tôi muốn một dấu chấm lửng thay vì ba chấm.

Lưu ý rằng văn bản được chuyển đến phương thức

npm install -D @types/sanitize-html
45 đã được thoát ra để hiển thị an toàn là HTML. Bạn có thể thêm đánh dấu và sử dụng các chuỗi thoát thực thể trong
npm install -D @types/sanitize-html
45 của bạn.

Bộ lọc iframe

npm install sanitize-html
4

Nếu bạn muốn cho phép các thẻ iframe nhưng muốn kiểm soát các tên 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 tên miền mà bạn muốn cho phép như các 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 chức năng Sanitize-HTML.

npm install sanitize-html
5

Các mảng này sẽ được kiểm tra đối với HTML được truyền vào hàm và chỉ trả về URL

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(""));
6 bao gồm tên máy chủ hoặc tên miền được phép trong đối tượng. URL trong HTML được truyề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.

npm install sanitize-html
6

Đảm bảo vượt qua tên máy chủ hợp lệ cùng với tên miền bạn muốn cho phép, tức là:

Bạn cũng có thể chỉ định xem có cho phép các URL tương đối như các nguồn iframe hay không.

npm install sanitize-html
7

Lưu ý rằng nếu không xác định, các URL tương đối sẽ được cho phép theo mặc định nếu không có bộ lọc tên máy chủ hoặc bộ lọc tên miền được cung cấp nhưng bị xóa theo mặc định nếu một bộ lọc tên máy chủ hoặc bộ lọc tên miền được cung cấp.

Hãy nhớ rằng thẻ

npm install -D @types/sanitize-html
41 phải được cho phép cũng như thuộc tí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(""));
6.

npm install sanitize-html
8

Ví dụ:

npm install sanitize-html
9

sẽ đi qua dưới dạng an toàn trong khi:

hoặc

yarn add sanitize-html
0

Sẽ trả về một thẻ iframe trống.

yarn add sanitize-html
1

Nếu bạn muốn cho phép bất kỳ tên miền phụ nào của bất kỳ cấp độ nào, bạn có thể cung cấp tên miền trong

npm install -D @types/sanitize-html
50

yarn add sanitize-html
2

Bộ lọc kịch bản

yarn add sanitize-html
3

Tương tự như IFRAME, bạn có thể cho phép thẻ tập lệnh trên danh sách các tên miền được liệt kê

Bạn cũng có thể cho phép một thẻ tập lệnh trên danh sách tên máy chủ được liệt kê

Cho phép các sơ đồ URL

Theo mặc định, chúng tôi cho phép các sơ đồ URL sau trong trường hợp 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(""));
1,
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(""));
6, v.v.

Bạn có thể ghi đè lên điều này nếu bạn muốn:

yarn add sanitize-html
4

Bạn cũng có thể chỉ cho phép một sơ đồ cho một thẻ cụ thể:

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 -D @types/sanitize-html
53) để truy cập một trang web khác bằng giao thức hiện tại, được cho phép theo mặc định:

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ữ văn bản, bạn có thể kích hoạt việc thoát toàn bộ nội dung:

yarn add sanitize-html
5

Điều này sẽ chuyển đổi

npm install -D @types/sanitize-html
66 thành
npm install -D @types/sanitize-html
67

Các giá trị hợp lệ là:

npm install -D @types/sanitize-html
68 (mặc định),
npm install -D @types/sanitize-html
69 (thoát thẻ) và
npm install -D @types/sanitize-html
70 (để 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 thẻ HTML trong tài liệu với tùy chọn

npm install -D @types/sanitize-html
71:

Điều này sẽ ngăn người dùng làm tổ sâu hơn 6 cấp độ. Tags sâu hơn điều đó bị tước 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 bảo tồn theo những cách thông thường khi thích hợp.

Về Apostrophecms

Sanitize-HTML đã được tạo tại Đại lộ P'unk để 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 kiểm tra Apostrophecms.

Ủng hộ

Hãy thoải mái mở các vấn đề trên GitHub.

Làm thế nào để vệ sinh HTML?

sethtml () được sử dụng để vệ sinh một chuỗi HTML và chèn nó vào phần tử bằng một ID mục tiêu.Phần tử tập lệnh không được phép bởi chất khử trùng mặc định để cảnh báo bị xóa. is used to sanitize a string of HTML and insert it into the Element with an id of target . The script element is disallowed by the default sanitizer so the alert is removed.

Làm thế nào TypeScript khử trùng HTML?

Làm thế nào TypeScript khử trùng HTML ?..
NPM Cài đặt -D @TYPE/SANITIZE -HTML.Nếu esmoduleInterop = true không được đặt trong tsconfig của bạn ..
nhập * như sanitizehtml từ 'sanitize-html' ;.
NPM Cài đặt Sanitize-HTML ..

Khi nào bạn nên vệ sinh HTML?

Việc vệ sinh HTML có thể được sử dụng để bảo vệ chống lại các cuộc tấn công như kịch bản chéo trang (XSS) bằng cách vệ sinh bất kỳ mã HTML nào được gửi bởi người dùng.to protect against attacks such as cross-site scripting (XSS) by sanitizing any HTML code submitted by a user.

Vệ sinh trong JavaScript là gì?

Phương pháp khử trùng () của giao diện khử trùng được sử dụng để vệ sinh một cây các nút dom, loại bỏ bất kỳ phần tử hoặc thuộc tính không mong muốn nào.Nó nên được sử dụng khi dữ liệu được vệ sinh đã có sẵn dưới dạng các nút dom.Ví dụ khi vệ sinh một thể hiện tài liệu trong khung.used to sanitize a tree of DOM nodes, removing any unwanted elements or attributes. It should be used when the data to be sanitized is already available as DOM nodes. For example when sanitizing a Document instance in a frame.