Skip to content

Commit 7727e46

Browse files
Model Flask SessionInterface request parameter
1 parent b1329fd commit 7727e46

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

python/ql/lib/semmle/python/frameworks/Flask.qll

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,19 @@ module Flask {
101101
/** Gets a reference to the `flask.request` object. */
102102
API::Node request() {
103103
result = API::moduleImport(["flask", "flask_restful"]).getMember("request")
104+
or
105+
result = sessionInterfaceRequestParam()
106+
}
107+
108+
/** Gets a `request` parameter of an implementation of `open_session` in a subclass of `flask.sessions.SessionInterface` */
109+
private API::Node sessionInterfaceRequestParam() {
110+
result =
111+
API::moduleImport("flask")
112+
.getMember("sessions")
113+
.getMember("SessionInterface")
114+
.getASubclass+()
115+
.getMember("open_session")
116+
.getParameter(1)
104117
}
105118

106119
/**
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import flask
2+
3+
class MySessionInterface(flask.sessions.SessionInterface):
4+
def open_session(self, app, request):
5+
ensure_tainted(request) # $tainted

0 commit comments

Comments
 (0)