【发布时间】:2019-09-03 04:58:12
【问题描述】:
我正在编辑一个现有代码,其中包含许多 Angular js 表达式,我们的自动化测试系统将这些表达式检测为不安全。我能够看到下面描述我的案例的文章,但我无法找到任何具体的方法来解决它(我主要看到 $watch 和 $apply)。我想我需要知道我在哪里对代码进行更改?
相关链接:
http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html https://docs.angularjs.org/guide/security#angularjs-templates-and-expressions
我的代码中的示例 sn-ps:
【问题讨论】:
-
这是我第一次听说
$watch()和$apply()可被利用。老实说,我不知道它们如何导致任何漏洞。 -
我认为这是在将内容传递给方法之前在 html 级别过滤内容;如果是这样,那么我们有静态内容或根本没有的部分呢?我也不相信某些部分是脆弱的,我很想就此获得一些其他意见。
-
您应该注意的一件事是,当在 HTML 中绑定文本时,不要直接使用 {{ variableName }} 绑定,因为它将执行此变量中的内容。应该使用不会呈现或执行内容的 ng-bind-html。这将有助于防止 XSS 攻击。
-
@Lex 你应该看到我发布的答案,这绝对是可以利用的。
-
@codymikol 您可以在自己的客户端上运行任意代码。我仍然看不出这是一种“利用”。您没有在服务器上执行代码。您甚至没有在其他用户的浏览器中执行代码。您正在自己的浏览器中执行代码。
标签: angularjs asp.net-mvc angularjs-directive expression xss