Skip to content

Commit d11f58f

Browse files
Add cookie header write concept from experimental.
1 parent b71ba7c commit d11f58f

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

python/ql/lib/semmle/python/Concepts.qll

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1234,6 +1234,29 @@ module Http {
12341234
}
12351235
}
12361236

1237+
/** A write to a `Set-Cookie` header that sets a cookie directly. */
1238+
private class CookieHeaderWrite extends CookieWrite::Range instanceof Http::Server::ResponseHeaderWrite
1239+
{
1240+
CookieHeaderWrite() {
1241+
exists(StringLiteral str |
1242+
str.getText() = "Set-Cookie" and
1243+
DataFlow::exprNode(str)
1244+
.(DataFlow::LocalSourceNode)
1245+
.flowsTo(this.(Http::Server::ResponseHeaderWrite).getNameArg())
1246+
)
1247+
}
1248+
1249+
override DataFlow::Node getNameArg() {
1250+
result = this.(Http::Server::ResponseHeaderWrite).getValueArg()
1251+
}
1252+
1253+
override DataFlow::Node getHeaderArg() {
1254+
result = this.(Http::Server::ResponseHeaderWrite).getValueArg()
1255+
}
1256+
1257+
override DataFlow::Node getValueArg() { none() }
1258+
}
1259+
12371260
/**
12381261
* A data-flow node that enables or disables Cross-site request forgery protection
12391262
* in a global manner.

0 commit comments

Comments
 (0)