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 {
251251 }
252252 }
253253
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+
254274 /**
255275 * A value being piped into the `safe` pipe in a template file,
256276 * disabling subsequent HTML escaping.
You can’t perform that action at this time.
0 commit comments