2016-09-13 2 views
7

として危険な勾配の治療:角度2は私が動的コンポーネントにグラデーションを設定しようとしていると、次の警告取得しています

import { Component } from '@angular/core'; 

@Component({ 
    selector: 'my-app', 
    template: '<h1 [style.background]="(\'linear-gradient(#000,#00f)\')">My First Angular 2 App</h1>' 
}) 
export class AppComponent {} 

マイ:ここでは、最小限の再現だ

WARNING: sanitizing unsafe style value linear-gradient(#000,#00f) (see http://g.co/ng/security#xss).

をグーグルはbypassSecurityTrustStyleを使用するように私に語ったが、私は私が知っていることをやってまで満足していない

  1. 線形勾配が安全でないと考えられるのはなぜですか?
  2. これは、現在のバージョンの角2のバグか、ちょうどバグですか。
  3. 安全でないと判断されない限り、これを行うより良い方法はありますか?

グラデーション文字列をプログラマチックに作成しているので、これは動的である必要があります。私はこれのためのCSSクラスを使用することはできません。

+0

あなたがDomSanitationServiceを使用していますか? https://github.com/angular/angular/issues/8491#issuecomment-217467582とこの回答を参照してください。http://stackoverflow.com/questions/37076867/in-rc-1-some-styles-cant-be-added -using-binding-syntax/37076868#37076868 – TylerH

+0

ええ、 'DomSanitationService'はすべての' bypassSecurityTrust * 'のものが存在する場所です。私はそれがグラデーションのために必要であると確信していません。 – david

答えて

2

1)なぜ線形勾配が安全でないと考えられるのですか?

あなたのスタイルを逃し、その下の制限(特にブラケット)今日のよう

linear-gradient(#000,#00f) 

https://github.com/angular/angular/blob/2.0.0-rc.7/modules/%40angular/platform-browser/src/security/style_sanitizer.ts#L30

(RC.7)regexpは

/^([-,."'%_!# a-zA-Z0-9]+|(?:(?:matrix|translate|scale|rotate|skew|perspective)(?:X|Y|3d)?|(?:rgb|hsl)a?)\([-0-9.%, a-zA-Z]+\))$/g 

enter image description hereのように見えるがあります。

2)は、この意図された動作または私はそれがバグ

githubの上の関連問題

よりも期待される振る舞いだと思うの角2

の現在のバージョン とちょうどバグです

3)これを行うには、 が安全でないと良い方法がありますか?

あなたが CustomDomSanitizerを書く経由でこの制限を回避することができ

@NgModule({ 
    imports:  [ BrowserModule ], 
    declarations: [ AppComponent ], 
    bootstrap: [ AppComponent ], 
    providers: [ { provide: DomSanitizer, useClass: CustomDomSanitizer } ], 
}) 
export class AppModule { } 

も参照してくださいそれが角2.4で修正されていますPlunker Example

+0

その "回避策"は、世界的に消毒を無効にするだけです...それはひどい考えのようです。私はまだ線形勾配がその正規表現のホワイトリストにない理由を理解していません。それは実際には危険ですか、それとも監視ですか? – david

+0

FWIW、このユースケースをサポートするためhttps://github.com/angular/angular/pull/13943を送信しました。将来的に問題を提出することを検討してください。これは実際にはCSSバリデータの見落としです! –

関連する問題