Nhập khẩu nguy hiểmsetinnerhtml
Chào mọi người. Trong bài viết này, tôi sẽ giải thích 5 là gì trong React và cách sử dụng nó một cách an toàn. Hãy bắt đầu nào Show
Khung React được biết là đã áp dụng hệ thống DOM độc lập với trình duyệt, có nghĩa là nó không tương tác trực tiếp với DOM. Và trong React, bạn sẽ nhận thấy rằng bạn không được phép thêm chuỗi HTML trực tiếp. Ví dụ
Đầu ra theo nghĩa đen sẽ là chuỗi 6 thay vì "Xin chào" bên trong phần tử đoạn vănDangerouslySetInnerHTMLThay vào đó, chúng ta có thể sử dụng 5, đây là phiên bản của React của 0. Nó được sử dụng như một chỗ dựa để bạn có thể truyền một đối tượng bằng phím 1 như vậy
Giá trị của khóa 1 có thể là một chuỗi sẽ được chèn dưới dạng mã HTML trực tiếp từ React. Đây là cách React có thể thêm trực tiếp mã HTML vào DOMSự nguy hiểm của DangerouslySetInnerHTMLNhư bạn có thể nhận thấy, tên của chỗ dựa này đặc biệt đáng sợ vì một lý do. Sẽ không an toàn nếu chỉ thêm mã HTML của bạn vì điều này dễ bị tấn công Cross Site Scripting hoặc XSS Tấn công XSS là một loại lỗ hổng bảo mật trong đó kẻ tấn công tiêm mã phía máy khách để đánh cắp thông tin và thực hiện các tập lệnh độc hại trong ứng dụng. Hãy minh họa điều này với một ví dụ
Một ví dụGiả sử chúng ta có một ứng dụng chỉnh sửa văn bản như bên dưới Người dùng được phép viết bất cứ thứ gì trên trình soạn thảo văn bản và tạo kiểu cho nó theo cách họ muốn. Sau đó, khi nhấp vào nút Lưu, trình soạn thảo văn bản sẽ hiển thị đầu vào của người dùng trên trang HTML như vậy Đằng sau hậu trường, trình soạn thảo văn bản về cơ bản trả về giá trị. 3, trong đó giá trị là đầu vào của người dùng với các thẻ HTML do trình chỉnh sửa thêm vào. Để hiển thị giá trị cho trang, chúng tôi sử dụng
Nhưng điều gì sẽ xảy ra nếu một người dùng độc hại nhập một số mã được đính kèm trong thẻ 4?giá trị sẽ là ________số 8điều đó có nghĩa là tập lệnh độc hại được đưa vào sẽ được thực thi và có thể được sử dụng để đánh cắp cookie, dữ liệu cá nhân và thông tin nhạy cảm khác của người dùng Làm thế nào để chúng ta sử dụng nó một cách an toàn?DOMPurify là gói npm được viết bởi hơn 60 chuyên gia bảo mật web để làm sạch mã HTML, ngăn chặn các cuộc tấn công XSS Với DOMPurify, chúng tôi có thể tăng tính bảo mật cho mã HTML được chèn của mình từ 5. Hãy xem cách chúng ta có thể sử dụng trình soạn thảo văn bản của mình một cách an toàn trong ví dụ trước đóBước 1. Cài đặt DOMPurifyCài đặt gói bằng cách chạy mã trong thư mục gốc của dự án của bạn
Bước 2. gói nhập khẩuTrong tệp 6 nơi bạn sẽ sử dụng 5, hãy thêm câu lệnh nhập ở trên cùng 1Bước 3. vệ sinhSau đó, chúng tôi chỉ cần chuyển 8 của mình vào phương thức 9 4Và thay vì thực thi tập lệnh, mã sẽ được xóa an toàn khỏi trang HTML. Vì vậy, sẽ không có gì kết xuất hoặc thực thi Phần kết luậnMặc dù đôi khi không thể tránh khỏi việc chúng tôi có thể cần sử dụng 5 trong các dự án của mình, nhưng điều quan trọng là phải hiểu những tác động nguy hiểm và bảo mật mà chỗ dựa này mang lạiCảm ơn vì đã đọc. Như mọi khi, xin vui lòng chia sẻ suy nghĩ của bạn trong phần bình luận bên dưới. Tôi hy vọng nó đã được đọc hữu ích. Ngoài ra, vui lòng xem thêm một số bài đọc trong phần bên dưới nếu bạn muốn biết thêm về những điều chúng ta đã thảo luận hôm nay. Cho đến lần sau, chúc mừng Tại sao bạn không nên sử dụng một cách nguy hiểmSetInnerHTML?Do tính dễ bị tấn công của tập lệnh chéo trang (XSS) , DangerlySetInnerHTML có thể tạo thành mối đe dọa lớn đối với ứng dụng của bạn, như tên cho thấy.
Tôi có thể sử dụng cái gì thay vì một cách nguy hiểmSetInnerHTML?Tuy nhiên, nếu ứng dụng hoặc trang web chấp nhận dữ liệu đầu vào của nhiều người dùng, bạn nên quan tâm. Tuy nhiên, ngoài điều đó ra, có một giải pháp thay thế cho việc sử dụng DangerlySetInnerHTML, chỉ cần thiết lập InternalHTML của phần tử HTML React bằng vanilla JS để thay thế.
Chúng ta có thể sử dụng InternalHTML trong React JS không?Quy tắc này áp dụng khi InternalHTML prop cho phần tử React DOM được sử dụng. InternalHTML prop rất rủi ro vì rất dễ khiến người dùng của bạn gặp phải một cuộc tấn công kịch bản chéo trang (XSS)
Thuộc tính nào là sự thay thế của React để sử dụng InternalHTML trong DOM của trình duyệt?dangerouslySetInnerHTML là một thuộc tính trong phần tử DOM trong React. Theo tài liệu chính thức, DangerlySetInnerHTML là sự thay thế của React cho việc sử dụng InternalHTML trong DOM của trình duyệt để đặt HTML theo chương trình hoặc từ một nguồn bên ngoài. |