Trong dự án của tôi, tôi đang sử dụng 'escape' làm chiến lược giá trị vệ sinh. Và tôi đang sử dụng dịch chỉ thị (thuộc tính) ở một số nơi. Một số nơi khác tôi đang sử dụng bộ lọc dịch.XSS trong Chỉ thị Dịch Angular
Với Chỉ thị:
<span translate="{{vm.text}}"><span>
Đây là vulnarable để XSS. Nếu giá trị của vm.text
là <script>alert()</script>
thì tập lệnh được thực thi và cửa sổ bật lên được hiển thị.
với Lọc:
<span>{{vm.text | translate}}<span>
Giá trị của vm.text
đang trốn thoát và html được hiển thị như <script>alert()</script>
Trong dịch tài liệu góc (https://angular-translate.github.io/docs/#/guide/19_security) họ khuyên bạn nên sử dụng 'thoát' như giá trị Sanitize chiến lược nói 'Hiện tại có sự cố với chế độ vệ sinh, nó sẽ mã hóa đôi ký tự UTF-8 hoặc ký tự đặc biệt. Đề xuất: sử dụng chiến lược 'thoát', cho đến khi giải pháp này được giải quyết '.
Có cách nào thích hợp để hiển thị html dưới dạng <script>alert()</script>
mà không thực thi không?
Tôi đã tìm thấy khi sử dụng bộ lọc nó thoát đúng cách nhưng sẽ không thoát khỏi loại tấn công này: #/{{{}. "))); Cảnh báo (1) //";}} Sử dụng chỉ thị sẽ thoát đúng cách loại tấn công này nhưng sau đó nó không thành công trên kịch bản tấn công mà bạn minh họa. Vì vậy, đối với tôi đây là một lỗ hổng lớn trong thư viện dịch. – Gurnard