栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将Flask中的JSON对象传递给JavaScript

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将Flask中的JSON对象传递给JavaScript

似乎当前接受的答案中存在一个可能的安全漏洞:如果我们传递给javascript的对象的某个字符串中带有单引号,则该单引号不会被逸出

json.dumps
,因此允许注入任意代码转换成javascript。最好使用Flask的
tojson()
模板过滤器,请参阅docs,因为它可以对所有此类字符进行正确的转义(将它们替换为unipre代码)。

这是我的解决方案:

view.py

from flask import Flask, render_templateapp = Flask(__name__)@app.route('/')def hello_world():    user = {'firstname': "Mr.", 'lastname': "My Father's Son"}    return render_template("index.html", user=user)if __name__ == '__main__':    app.run()

index.html

<p>Hello, <span id="username"></span></p><script>    var user = JSON.parse('{{ user | tojson | safe}}');    document.getElementById('username').innerHTML = user.firstname + " " + user.lastname;</script>

生成的JS看起来像:

var user = JSON.parse('{"firstname": "Mr.", "lastname": "My Fatheru0027s Son"}');

这是绝对安全的。例如,如果我们使用json.dumps-powered解决方案,我们将得到

var user = JSON.parse('{"firstname": "Mr.", "lastname": "My Father's Son"}');

这在语法上是不正确的(至少可以这样说)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/383678.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号