File tree Expand file tree Collapse file tree 1 file changed +20
-0
lines changed
javascript/ql/lib/semmle/javascript/security/dataflow Expand file tree Collapse file tree 1 file changed +20
-0
lines changed Original file line number Diff line number Diff line change @@ -251,6 +251,26 @@ module DomBasedXss {
251
251
}
252
252
}
253
253
254
+ /**
255
+ * A write to the `innerHTML` property of a DOM element, viewed as an XSS sink.
256
+ *
257
+ * Uses the Angular Renderer2 API, instead of the default `Element.innerHTML` property.
258
+ */
259
+ class AngularRender2SetPropertyInnerHtmlSink extends Sink {
260
+ AngularRender2SetPropertyInnerHtmlSink ( ) {
261
+ exists ( API:: CallNode setProperty |
262
+ setProperty =
263
+ API:: moduleImport ( "@angular/core" )
264
+ .getMember ( "Renderer2" )
265
+ .getInstance ( )
266
+ .getMember ( "setProperty" )
267
+ .getACall ( ) and
268
+ this = setProperty .getParameter ( 2 ) .asSink ( ) and
269
+ setProperty .getParameter ( 1 ) .asSink ( ) .asExpr ( ) .( StringLiteral ) .getValue ( ) = "innerHTML"
270
+ )
271
+ }
272
+ }
273
+
254
274
/**
255
275
* A value being piped into the `safe` pipe in a template file,
256
276
* disabling subsequent HTML escaping.
You can’t perform that action at this time.
0 commit comments