Tôi đang học phòng ngừa xss thông qua ppt này: http://stash.github.io/empirejs-2014/#/2/23 và tôi có câu hỏi trên trang này."JavaScript khử trùng không giúp bạn tiết kiệm từ innerHTML" nghĩa là gì?
Nó nói "sanitization JavaScript không giúp bạn tiết kiệm từ innerHTML", và tôi đã cố gắng một thử nghiệm đơn giản như thế này:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
<div id="test"></div>
<script>
var userName = "Jeremy\x3Cscript\x3Ealert('boom')\x3C/script\x3E";
document.getElementById('test').innerHTML = "<span>"+userName+"</span>";
</script>
</body>
</html>
khi tôi mở html này trên trình duyệt của tôi (chrome), tôi chỉ nhìn thấy cái tên "Jeremy", bằng cách sử dụng F12, tôi thấy
<div id="test"><span>Jeremy<script>alert('boom')</script></span></div>
Mặc dù tập lệnh đã được thêm vào html, hộp cảnh báo không xuất hiện.
"JavaScript khử trùng không giúp bạn tiết kiệm từ innerHTML" Tôi nghĩ điều này có nghĩa là từ "bùng nổ" cần được cảnh báo. Tôi có đúng không?
"* Tôi có đúng không? *". Số * innerHTML * không thực thi các tập lệnh. – RobG
innerHTML * có thể * được thực hiện để thực thi tập lệnh thông qua việc sử dụng các thuộc tính nội dòng. –