@@ -60,45 +60,53 @@ private predicate isCallOnResponseHeadersAccess(Call call) {
6060 )
6161}
6262
63- /** Gets an expression that configures a clickjacking-related response header. */
64- Call getAClickjackingHeaderWrite ( ) {
63+ private predicate isClickjackingHeaderCall ( MethodCall call ) {
6564 (
66- result .getTarget ( ) = any ( SystemWebHttpResponseClass r ) .getAppendHeaderMethod ( ) or
67- result .getTarget ( ) = any ( SystemWebHttpResponseClass r ) .getAddHeaderMethod ( )
65+ call .getTarget ( ) = any ( SystemWebHttpResponseClass r ) .getAppendHeaderMethod ( ) or
66+ call .getTarget ( ) = any ( SystemWebHttpResponseClass r ) .getAddHeaderMethod ( )
6867 ) and
6968 (
70- isXFrameOptionsHeaderNameExpr ( result .getArgumentForName ( "name" ) )
69+ isXFrameOptionsHeaderNameExpr ( call .getArgumentForName ( "name" ) )
7170 or
72- isContentSecurityPolicyHeaderNameExpr ( result .getArgumentForName ( "name" ) ) and
73- containsFrameAncestorsDirectiveExpr ( result .getArgumentForName ( "value" ) )
71+ isContentSecurityPolicyHeaderNameExpr ( call .getArgumentForName ( "name" ) ) and
72+ containsFrameAncestorsDirectiveExpr ( call .getArgumentForName ( "value" ) )
7473 )
75- or
76- result . getTarget ( ) . hasUndecoratedName ( [ "Append" , "Add" , "TryAdd" ] ) and
77- isCallOnResponseHeadersAccess ( result ) and
74+ }
75+
76+ private predicate isClickjackingHeaderDictionaryLikeWrite ( Call call ) {
7877 (
79- isXFrameOptionsHeaderNameExpr ( result . getArgumentForName ( "key" ) )
78+ call . getTarget ( ) . hasUndecoratedName ( [ "Append" , "Add" , "TryAdd" ] )
8079 or
81- isContentSecurityPolicyHeaderNameExpr ( result .getArgumentForName ( "key" ) ) and
82- containsFrameAncestorsDirectiveExpr ( result .getArgumentForName ( "value" ) )
80+ call .( IndexerCall ) .getTarget ( ) instanceof Setter
81+ ) and
82+ (
83+ isXFrameOptionsHeaderNameExpr ( call .getArgumentForName ( "key" ) )
84+ or
85+ isContentSecurityPolicyHeaderNameExpr ( call .getArgumentForName ( "key" ) ) and
86+ containsFrameAncestorsDirectiveExpr ( call .getArgumentForName ( "value" ) )
8387 )
84- or
85- result .getTarget ( ) instanceof Setter and
86- isCallOnResponseHeadersAccess ( result ) and
88+ }
89+
90+ private predicate isClickjackingPropertyWrite ( Call c ) {
91+ c .getTarget ( ) instanceof Setter and
8792 (
88- isXFrameOptionsHeaderNameExpr ( result .getArgumentForName ( "key" ) )
93+ c .( PropertyCall ) .getProperty ( ) =
94+ any ( MicrosoftAspNetCoreHttpIHeaderDictionary dic ) .getXFrameOptionsProperty ( )
8995 or
90- isContentSecurityPolicyHeaderNameExpr ( result .getArgumentForName ( "key" ) ) and
91- containsFrameAncestorsDirectiveExpr ( result .getArgumentForName ( "value" ) )
96+ c .( PropertyCall ) .getProperty ( ) =
97+ any ( MicrosoftAspNetCoreHttpIHeaderDictionary dic ) .getContentSecurityPolicyProperty ( ) and
98+ containsFrameAncestorsDirectiveExpr ( c .getArgumentForName ( "value" ) )
9299 )
100+ }
101+
102+ /** Gets an expression that configures a clickjacking-related response header. */
103+ Call getAClickjackingHeaderWrite ( ) {
104+ isClickjackingHeaderCall ( result )
93105 or
94- result .getTarget ( ) instanceof Setter and
95106 isCallOnResponseHeadersAccess ( result ) and
96107 (
97- result .( PropertyCall ) .getProperty ( ) =
98- any ( MicrosoftAspNetCoreHttpIHeaderDictionary dic ) .getXFrameOptionsProperty ( )
108+ isClickjackingHeaderDictionaryLikeWrite ( result )
99109 or
100- result .( PropertyCall ) .getProperty ( ) =
101- any ( MicrosoftAspNetCoreHttpIHeaderDictionary dic ) .getContentSecurityPolicyProperty ( ) and
102- containsFrameAncestorsDirectiveExpr ( result .getArgumentForName ( "value" ) )
110+ isClickjackingPropertyWrite ( result )
103111 )
104112}
0 commit comments