Lỗ hổng bảo mật internalhtml
Tất cả thông tin do IBM cung cấp trên trang này và trong các tài liệu được liên kết đều được cung cấp 'nguyên trạng' kể từ thời điểm xuất bản và IBM có quyền thay đổi hoặc cập nhật nội dung này mà không cần thông báo vào bất kỳ lúc nào Show Phòng thí nghiệm này chứa lỗ hổng tập lệnh chéo trang dựa trên DOM trong chức năng blog tìm kiếm. Nó sử dụng phép gán 0, thay đổi nội dung HTML của phần tử 1, sử dụng dữ liệu từ 2Để giải quyết vấn đề này, hãy thực hiện tấn công cross-site scripting gọi hàm 3Dung dịch
Giá trị của thuộc tính 5 không hợp lệ và gây ra lỗi. Điều này kích hoạt trình xử lý sự kiện 6, sau đó gọi hàm 7. Do đó, tải trọng được thực thi bất cứ khi nào trình duyệt của người dùng cố tải trang có chứa bài đăng độc hại của bạn QUAN TRỌNG. một số thông tin trong bài viết này đã lỗi thời. Vui lòng đọc bài viết cập nhật này để thay thế Tôi thường sử dụng 0 để đưa HTML vào một phần tử bằng vanilla JavaScriptHôm qua, một trong những sinh viên của tôi đã hỏi tôi về sự nguy hiểm của cross-site scripting (XSS) khi sử dụng thuộc tính này. Anh ấy đã được thông báo rằng nó không an toàn và không bao giờ sử dụng nó Hôm nay, hãy giải nén nó và tìm hiểu cách ngăn chặn các cuộc tấn công XSS với 0Làm thế nào nó hoạt độngÝ tưởng đằng sau một cuộc tấn công XSS với 0 là mã độc sẽ được đưa vào trang web của bạn và sau đó thực thi. Điều này là có thể vì 0 hiển thị đánh dấu hoàn chỉnh chứ không chỉ văn bảnTuy nhiên, có một biện pháp bảo vệ tích hợp sẵn. Chỉ thêm một phần tử 2 sẽ không khiến bạn bị tấn công, bởi vì phần DOM mà bạn đang đưa vào đã được phân tích cú pháp và chạy
Tuy nhiên, JavaScript chạy sau đó sẽ
Khi nào đây là một vấn đềNếu bạn đưa phần đánh dấu của riêng mình vào một trang, thì không có gì đáng lo ngại. Mối nguy hiểm đến từ việc đưa đánh dấu của người dùng và bên thứ ba vào DOM Nếu bạn đang thêm nội dung vào một trang mà bạn không viết, bạn nên dọn dẹp nội dung đó để bảo vệ bản thân khỏi các cuộc tấn công XSS Hãy xem cách Một giải pháp thay thế an toàn cho // This WILL run
div.innerHTML = '';
// This will, too
div.innerHTML = ' |