为什么angular会在app-root html标签中添加ng-version属性?

9
今天,我注意到Angular会将其版本信息添加在app-root中,如下所示:
<app-root _nghost-c0="" ng-version="5.2.0">

即使在生产环境中构建,似乎也存在这个问题。我不知道将该信息添加到那里的主要目的是什么?公开显示Angular版本不会是安全问题吗?谢谢。

安全性通过混淆可能会防止Google Dorks攻击者。无论如何,我似乎找不到这个属性的用途,除了在HTML文件中消耗一些微小的字节。 - Mehdi Benmoha
3个回答

6

这是一个老问题,但仍然相关,并且被接受的答案可能会误导。Miško Hevery表示:"这是有意为之的,以便诸如augury之类的工具可以检测到它是一个Angular页面,并提供有用的UI界面。"

这本身不是一个安全问题,但隐藏它也不是“安全性通过混淆(obscurity)获得”,因为那将意味着这是你采取的所有安全措施。 实际上,使用混淆(obscurity)是一种好的做法,因为它使攻击者进行信息收集(recon)更加困难,但是你不能仅仅依赖这个来保护自己。


很酷,非常有趣,当时我在搜索时没有找到Github问题。我认为它(augury)背后的目标非常愚蠢,因为DOM与那种东西毫无关系... - Mehdi Benmoha

4

1
谢谢,我现在相信了。我还学到了,我可以从格式良好的 Github 提交消息中获得许多答案 :D(当然)。 - Mehdi Benmoha
1
隐藏软件版本号是安全性通过混淆的说法并不正确,正如@lordmairtis所指出的那样。隐藏使用的软件版本号是任何加固指南中都会提到的安全最佳实践。 - Coo

0

前往您的根组件并添加此代码片段以删除ng-version属性:

@Component({
    selector: '[data-app]',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.scss']
})
export class AppComponent {
    constructor(private _elementRef: ElementRef) {
    }

    ngOnInit(): void {
        this._elementRef.nativeElement.removeAttribute("ng-version");
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接