Vệ sinh mã JavaScript

nhập * dưới dạng vệ sinh từ 'sanitize-html'; . vệ sinh. IOptions = { allowTags. vệ sinh. mặc định. cho phépTags. concat['h1', 'h2', 'img'], allowAttributes. { 'một'. vệ sinh. mặc định. allowAttributes['a']. concat['rel'], 'img'. ['src', 'height', 'width', 'alt'] }, transformTags. { 'một'. vệ sinh. SimpleTransform['a', { 'rel'. 'nofollow' }], 'img'. [tên thẻ. chuỗi, thuộc tính. vệ sinh. Thuộc tính] => { let img = { tagName, attribs }; . attribs['alt'] = 'đã biến đổi' ; . chức năng [khung. vệ sinh. iFrame] { khung trả lại. thẻ === 'a' &&. khung. chữ. cắt [];

Trong vài ngày qua, chúng tôi đã xem xét cách hoạt động của các cuộc tấn công tập lệnh chéo trang và cách đưa văn bản thuần túy hoặc chuỗi HTML được mã hóa vào có thể giúp bạn an toàn hơn. Chúng tôi cũng đã xem xét một số nhược điểm của cả hai kỹ thuật đó

Hôm nay, chúng ta sẽ xem xét một cách tiếp cận cuối cùng. vệ sinh. Nào cùng đào vào bên trong

Vệ sinh là gì?

Sanitizing là quá trình xóa bất kỳ thuộc tính, thuộc tính và giá trị nào không có trong danh sách cho phép hoặc bị cấm rõ ràng trong danh sách không cho phép

Ví dụ: nếu HTML được hiển thị từ chuỗi HTML của chúng tôi trông như thế này…


View My Profile

Khi được thêm vào giao diện người dùng, một số mục có thể bị hỏng nhưng nội dung độc hại sẽ không được hiển thị

Cách vệ sinh chuỗi HTML bằng vanilla JS

Phương thức


View My Profile
5 để tạo các phần tử HTML từ chuỗi HTML của bạn, sau đó lặp qua từng phần tử và xóa mọi thuộc tính, thuộc tính và giá trị không có trong danh sách cho phép hoặc bị cấm rõ ràng trong danh sách không cho phép

Bạn có thể chuyển toàn bộ chuỗi HTML của mình vào một thư viện khử trùng và nó sẽ trả về một chuỗi đã khử trùng mà bạn có thể sử dụng với thuộc tính chuỗi HTML hoặc các phần tử đã khử trùng mà bạn có thể đưa vào DOM bằng một phương thức như


View My Profile
8. Chúng tôi sẽ chấp nhận chuỗi để khử trùng làm đối số

Chúng tôi có thể trả về một chuỗi đã được khử trùng HOẶC chính các nút đã được khử trùng. Hãy cung cấp cho người dùng khả năng quyết định cái họ muốn bằng đối số thứ hai,


View My Profile
0

Nhưng tin tặc sử dụng tất cả các loại thủ thuật viết hoa và khoảng trắng để tránh những thứ như vậy, vì vậy chúng tôi cần chuẩn hóa chuỗi của mình

Chúng ta có thể sử dụng phương thức

// Convert the string to HTML
let html = stringToHTML[];

// Sanitize it
removeScripts[html];
9 để xóa tất cả khoảng trắng khỏi chuỗi của mình và phương thức
/**
 * Remove dangerous stuff from the HTML document's nodes
 * @param  {Node} html The HTML document
 */
function clean [html] {
	let nodes = html.children;
	for [let node of nodes] {
		removeAttributes[node];
		clean[node];
	}
}
0 để chuyển đổi nó thành chữ thường. Chúng ta sẽ gán chuỗi đã chuẩn hóa cho biến
/**
 * Remove dangerous stuff from the HTML document's nodes
 * @param  {Node} html The HTML document
 */
function clean [html] {
	let nodes = html.children;
	for [let node of nodes] {
		removeAttributes[node];
		clean[node];
	}
}
1 và sử dụng chuỗi đó thay thế


View My Profile
2

Chúng ta có thể đưa nó vào DOM như thế này


View My Profile
4

Đây là một bản demo. Bạn cũng có thể tải xuống tập lệnh đã hoàn thành trên Bộ công cụ Vanilla JS

Nếu bạn muốn thứ gì đó mạnh mẽ hơn, thì DOMPurify là thư viện đầu ngành sử dụng danh sách cho phép và có khả năng cấu hình cao

Vệ sinh trong JavaScript là gì?

Phương thức sanitize[] của giao diện Sanitizer được sử dụng để làm sạch cây gồm các nút DOM, loại bỏ mọi thành phần hoặc thuộc tính không mong muốn . Nó nên được sử dụng khi dữ liệu được làm sạch đã có sẵn dưới dạng các nút DOM. Ví dụ: khi khử trùng một phiên bản Tài liệu trong một khung.

Làm cách nào để khử trùng mã trong JavaScript?

Cách làm sạch HTML bằng JavaScript .
var unsanitizedHTML = 'alert["XSS"];';.
phần tử var = tài liệu. .
/** * @param {string} text * @return {string} */ function sanitizeHTML[text] { var element = document. .
var sanitizedHTML = $['
']..

Làm cách nào để khử trùng đầu vào trong JavaScript?

Để làm sạch dữ liệu đầu vào của người dùng, bạn vẫn có thể sử dụng trình xác thực. js như tôi đã trình bày ở trên. Trình xác thực. js được hỗ trợ với cả mã phía máy khách và mã phía sau

Mã vệ sinh là gì?

Khử trùng HTML là quá trình kiểm tra tài liệu HTML và tạo tài liệu HTML mới chỉ giữ lại bất kỳ thẻ nào được chỉ định là “an toàn” và mong muốn. HTML sanitization can be used to protect against cross-site scripting [XSS] attacks by sanitizing any HTML code submitted by a user.

Chủ Đề