diff --git a/python/flask/security/dangerous-template-string.py b/python/flask/security/dangerous-template-string.py
index 010c805407..fc8e47609f 100644
--- a/python/flask/security/dangerous-template-string.py
+++ b/python/flask/security/dangerous-template-string.py
@@ -28,18 +28,18 @@ def error2(e):
''' % (request.url)
return flask.render_template_string(template), 404
-## Doesn't work yet
-#@app.route("/error3")
-#def error3(e):
-# template = f'''{ extends "layout.html" }
-#{ block body }
-#
-#
Oops! That page doesn't exist.
-# {request.url}
-#
-#{ endblock }
-#'''
-# return flask.render_template_string(template)
+@app.route("/error3")
+def error3(e):
+ # ruleid: dangerous-template-string
+ template = f'''{{ extends "layout.html" }}
+{{ block body }}
+
+
Oops! That page doesn't exist.
+ {request.url}
+
+{{ endblock }}
+'''
+ return flask.render_template_string(template)
@app.route("/error4")
def error4(e):
@@ -58,3 +58,38 @@ def error4(e):
{ endblock }
"""
rendered = flask.render_template_string(template)
+
+@app.route("/inline_fstring")
+def inline_fstring():
+ # ruleid: dangerous-template-string
+ return flask.render_template_string(f"{request.url}
")
+
+@app.route("/inline_fstring_tuple")
+def inline_fstring_tuple():
+ # ruleid: dangerous-template-string
+ return flask.render_template_string(f"{request.url}
"), 404
+
+@app.route("/inline_format")
+def inline_format():
+ # ruleid: dangerous-template-string
+ return flask.render_template_string("{}
".format(request.url))
+
+@app.route("/inline_percent")
+def inline_percent():
+ # ruleid: dangerous-template-string
+ return flask.render_template_string("%s
" % request.url)
+
+@app.route("/inline_concat")
+def inline_concat():
+ # ruleid: dangerous-template-string
+ return flask.render_template_string("" + request.url + "
")
+
+@app.route("/safe_context")
+def safe_context():
+ # ok: dangerous-template-string
+ return flask.render_template_string("{{ url }}
", url=request.url)
+
+@app.route("/safe_constant")
+def safe_constant():
+ # ok: dangerous-template-string
+ return flask.render_template_string("static
")
diff --git a/python/flask/security/dangerous-template-string.yaml b/python/flask/security/dangerous-template-string.yaml
index a930632229..fb4117853a 100644
--- a/python/flask/security/dangerous-template-string.yaml
+++ b/python/flask/security/dangerous-template-string.yaml
@@ -60,3 +60,7 @@ rules:
$V = f"...{$X}..."
...
return flask.render_template_string($V, ...), $CODE
+ - pattern: flask.render_template_string(f"...{$X}...", ...)
+ - pattern: flask.render_template_string("...".format(...), ...)
+ - pattern: flask.render_template_string("..." % $X, ...)
+ - pattern: flask.render_template_string($A + $B, ...)