我刚刚开始使用Flask Web框架。我目前正在编写一个端点,返回可能包含恶意javascript的JSON位。
例如:
@api.route("/tester")
def api_jobs_tester():
return jsonify({
"name": "<script>alert(1)</script>"
})
在此示例中,返回:
{
"name": "<script>alert(1)</script>"
}
然而,理想情况下,我希望这回事:
{
"name": "<script>alert(1)</script>"
}
当然,对于每个值,这是直接的,只需:
return jsonify({
"name": escape("<script>alert(1)</script>")
})
但是,我可能需要返回比这更复杂的JSON响应,其中我不一定知道JSON的结构。
我可能会扮演我自己的遍历JSON树的函数并转义所有字符串,但我更喜欢这种内置方式。
使用Flask转义JSON响应中的值的最简单方法是什么?
答案 0 :(得分:5)
jsonify 函数避免了转义的选项。但是你可以使用flask.json中的 htmlsafe_dumps 函数:
from flask import json, jsonify
return jsonify(**json.loads(json.htmlsafe_dumps(obj)))