2

我试图弄清楚DomSanitizerAngular 10 中的真正工作原理。

我一直在尝试清理以下 CSS 字符串,但没有任何运气:

const testString = 'transform: rotate(70deg);color: blue;';
const result = this.sanitizer.sanitize(SecurityContext.STYLE, testString);

在上面的代码片段中,result常量变量总是等于testString. 我期望发生的是result应该只包含color: blue;并且transform从字符串中过滤掉 CSS 属性。

我还尝试清理一些通过如下字符串提供的 JavaScript 代码:

const testString = 'alert("hacked!");console.log("logged");';
const result = this.sanitizer.sanitize(SecurityContext.SCRIPT, testString);

但是,在此示例中,该函数使用脚本上下文中使用sanitize()的消息 unsafe value 引发错误。

我期望在这里发生的是result常量变量应该是一个空字符串。

4

1 回答 1

0

您可以放置​​ if Logic以检查其是否为蓝色 - 然后else不返回任何内容或返回所需的数据。

if(testString==='blue'){
const result = this.sanitizer.sanitize(SecurityContext.STYLE, testString);

} else {
console.log('whatever you like')
}
于 2021-07-18T13:58:32.780 回答