簡體   English   中英

DOM 清理 function 不是 escaping 用戶輸入的文本

[英]DOM sanitize function is not escaping the text that user entered

試圖使用 Angular 清理 API 與用戶在 angular 表單中輸入的用戶輸入。 但是 Angular 的Sanitize()不是 escaping 輸入的輸入。

.ts

export class AppComponent {
  userName = 'Angular';

  constructor(private domSanitizer: DomSanitizer) {}

  onSave(): void {
    console.log('save clicked api call');
    this.sanitizeUserName();
  }

  sanitizeUserName(): string {
    const domSanitize = this.domSanitizer.sanitize(1, this.userName);
    console.log('sanitized text/html', domSanitize);
    return domSanitize;
  }
}

.html

<form #userForm="ngForm">
  <label>Username: </label>
  <input type="text" [(ngModel)]="userName" name="username" />

  <div>
    <span>View : </span>
    <div [innerHTML]="userName"></div>
  </div>

  <br />
  <br />
  <button type="button" (click)="onSave()">Save</button>
</form>

請在此處找到實時示例。 component.ts中,我添加了一些示例來驗證輸入是否經過清理。

如果有人可以幫助我。

清理方法模型是:

 sanitize(context: SecurityContext, value: SafeValue | string | null): string | null;

和 SecurityContext model 是:

enum SecurityContext {
    NONE = 0,
    HTML = 1,
    STYLE = 2,
    SCRIPT = 3,
    URL = 4,
    RESOURCE_URL = 5
}

所以看來你應該為 SecurityContext 使用第一名

  sanitizeUserName(): string {
    const domSanitize = this.domSanitizer.sanitize(1, this.userName);
    console.log('sanitized text/html', domSanitize);
    return domSanitize;
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM