2014-09-15 53 views
16

ile niteliklerini izin verin. Bununla birlikte, içerik bir HTML Richtext düzenleyicisi kullanılarak oluşturulur ve kaldırılan bazı stil bilgilerini içerir (ör. Metin rengi).

Satır içi CSS stillerini kaldırmanın yararlı olduğunu biliyorum, ancak kaldırılmamış CSS öznitelikleriyle beyaz listesi'u tercih ederim. Tüm CSS özelliklerini vermeden bunu başarmanın bir yolu var mı? veri (described here, in $compileProvider) engellemek için ne olduğunu belirlemek için iki beyaz listeler kullanır sanki ngSanitize belgelerine Okuma

+0

Sunucu tarafını sterilize etmemeli miydiniz? –

+0

@MattWay haklı olabilirsiniz, ancak alternatif, satır içi CSS'yi ayrıştırmak ve öğeyi, bazı biçimlendirme HTML etiketleriyle sarmak olacaktır, ancak ben, örn. yazı tipi rengini bu şekilde ayarla, olur mu? – muffel

cevap

13

görünüyor.

iki beyaz listeler aHrefSanitizationWhitelist([regexp]) ve imgSrcSanitizationWhitelist([regexp]) bulunmaktadır. Ancak, bu ikisi de XSS saldırılarını önlemek için bağlantılar için yalnızca URL'leri işliyor gibi görünüyor.

sce.trustAsHtml() (veya muhtemelen data-bind-html-unsafe, eğer hala bir şeyse, ancak bunun kullanımdan kaldırılmış olduğunu düşünebilirsiniz) kullanabilirsiniz; ancak bu tam olarak istediğiniz gibi değildir; Bu sizi tüm HTML’lere açacak, güvenli veya güvensiz.

O documentation for $sce kontrol etmek değebilir. Şimdiye kadar baktığımızda, CSS'den kaçmak için bir seçenek var, ancak HTML etiketinde satır içi CSS'den çıkıp çıkamayacağından emin değilim. Şimdiye kadar, parseAs yöntemine bir beyaz liste sağlama seçeneği yok.

Düzenleme: etiketleri tarzında şeyler izin verecek şekilde ayarlanmış, ancak stil niteliklerini oluyor sanki

$sanitizesource code içinden bakıldığında görünüyor. Kaynak kodunu değiştirmediğiniz sürece stil özellikleri sıhhileştirilerek çıkarılacaktır. Ancak, sınıflar soyulmadığından, orada bir geçici çözümünüz olabilir. (Aslında, sınıflara izin vermek ve satır içi stilleri kullanmadan, yorum bölümünü stil kullanımını kısıtlayabilirsiniz.)

Diğer tek alternatif, kendi başınızı döndürmek olurdu, öyle görünüyor ki, birisi olmadıkça. textAngular de

+0

stili sanitize edilerek düştü ancak benim durumumda sınıf izin verildi, başkalarına da yardım etmeli. –

12

millet üzerinde stil özellikleri için izin verecektir ng-sterilize bir çatal var. Ng-sanitize yerine kendi sürümünü kullanın.

İlgili konular