@@ -664,6 +664,51 @@ module AiohttpWebModel {
664664 override DataFlow:: Node getNameArg ( ) { result in [ this .getArg ( 0 ) , this .getArgByName ( "name" ) ] }
665665
666666 override DataFlow:: Node getValueArg ( ) { result in [ this .getArg ( 1 ) , this .getArgByName ( "value" ) ] }
667+
668+ override predicate hasSecureFlag ( boolean b ) {
669+ super .hasSecureFlag ( b )
670+ or
671+ exists ( DataFlow:: Node arg , BooleanLiteral bool | arg = this .getArgByName ( "secure" ) |
672+ DataFlow:: localFlow ( DataFlow:: exprNode ( bool ) , arg ) and
673+ b = bool .booleanValue ( )
674+ )
675+ or
676+ not exists ( this .getArgByName ( "secure" ) ) and
677+ b = false
678+ }
679+
680+ override predicate hasHttpOnlyFlag ( boolean b ) {
681+ super .hasHttpOnlyFlag ( b )
682+ or
683+ exists ( DataFlow:: Node arg , BooleanLiteral bool | arg = this .getArgByName ( "httponly" ) |
684+ DataFlow:: localFlow ( DataFlow:: exprNode ( bool ) , arg ) and
685+ b = bool .booleanValue ( )
686+ )
687+ or
688+ not exists ( this .getArgByName ( "httponly" ) ) and
689+ b = false
690+ }
691+
692+ override predicate hasSameSiteAttribute ( Http:: Server:: CookieWrite:: SameSiteValue v ) {
693+ super .hasSameSiteAttribute ( v )
694+ or
695+ exists ( DataFlow:: Node arg , StringLiteral str | arg = this .getArgByName ( "samesite" ) |
696+ DataFlow:: localFlow ( DataFlow:: exprNode ( str ) , arg ) and
697+ (
698+ str .getText ( ) .toLowerCase ( ) = "strict" and
699+ v instanceof Http:: Server:: CookieWrite:: SameSiteStrict
700+ or
701+ str .getText ( ) .toLowerCase ( ) = "lax" and
702+ v instanceof Http:: Server:: CookieWrite:: SameSiteLax
703+ or
704+ str .getText ( ) .toLowerCase ( ) = "none" and
705+ v instanceof Http:: Server:: CookieWrite:: SameSiteNone
706+ )
707+ )
708+ or
709+ not exists ( this .getArgByName ( "samesite" ) ) and
710+ v instanceof Http:: Server:: CookieWrite:: SameSiteLax // Lax is the default
711+ }
667712 }
668713
669714 /**
0 commit comments