flawopen.com/Keamanan Angular/Angular
Perlindungan XSS Angular: default aman dan API bypass
Angular menganggap nilai dalam template binding tidak tepercaya: interpolasi meng-escape teks, sedangkan binding HTML dan URL disanitasi sesuai konteks. Batas berbahaya muncul saat kepercayaan diberikan secara eksplisit: bypassSecurityTrust* meminta Angular melewati sanitasi normal untuk nilai itu. Gunakan hanya setelah nilai divalidasi dan dibentuk untuk konteks keamanan persis tempat nilai tersebut dipakai.
this.safeHtml = this.sanitizer
.bypassSecurityTrustHtml(comment);
// <div [innerHTML]="safeHtml"></div>
<div>{{ comment }}</div>
// interpolasi meng-escape markup sebagai teks
Apa yang disanitasi Angular — dan yang tidak bisa
Angular meng-escape teks interpolasi dan menyanitasi nilai tak tepercaya dalam konteks HTML serta URL. Misalnya, [innerHTML] menghapus markup berbahaya sambil mempertahankan HTML yang aman; interpolasi biasa tidak menafsirkan markup. Resource URL (seperti sumber iframe yang memuat konten executable) tidak dapat disanitasi secara umum karena dapat menunjuk ke kode sembarang. Jangan berikan nilai yang dikendalikan penyerang kepada bypassSecurityTrustHtml, bypassSecurityTrustUrl, bypassSecurityTrustResourceUrl, atau API bypass terkait: API itu menyatakan nilai aman untuk konteks tertentu dan melewati sanitasi. Untuk embed yang sah, bentuk URL dari origin tetap dan ID tervalidasi tepat sebelum menandainya tepercaya.
Audit API bypass dan sink DOM
grep -rn "bypassSecurityTrust" --include="*.ts" .Pertanyaan umum
Pertahanan berlapis dengan CSP dan Trusted Types
Gunakan Content Security Policy (CSP) dan wajibkan Trusted Types sebagai pertahanan berlapis bersama binding Angular yang aman. Angular memerlukan kebijakan Trusted Types angular#unsafe-bypass saat aplikasi memanggil DomSanitizer.bypassSecurityTrust*. Sebaiknya hapus pemanggilan tersebut; jika diperlukan, inventarisasi setiap lokasi pemanggilan dan percayai hanya nilai yang divalidasi untuk konteksnya secara tepat.
Tidak. Template binding dilindungi framework, tetapi API DOM langsung, ElementRef, dan library DOM pihak ketiga dapat melewati perlindungan itu. Utamakan template binding, audit sink tersebut secara terpisah, dan jangan tandai input sebagai tepercaya tanpa validasi untuk konteks keamanan yang tepat.