哪种方法是通过python Flask中的jsonify()
保护XSS攻击的最佳方法?
这是Python(Flask)文件:
testvar = {0: {'Name': 'df',
'test1': 'sdf',
'test2': 'sdf'},
1: {'Name': 'dfdf',
'test1': 'sdf',
'test2': 'dfdf'},
2: {'Name': 'dfdf',
'test1': 'dfdfd',
'test2': 'dfdfd<script>alert("test");</script>'}}
@app.route("/test")
def test():
return jsonify(testvar)
这是Javascript:
output_body = ""
$.getJSON('/test',function(data){
$.each(data, function(key,val){
output_body += "<tr>"
for(property in val) {
output_body += "<td>" + val[property] + "</td>"
}
output_body += "</tr>"
});
$('table').html(output_body);
});
此代码执行js警报框。
我当然可以通过转义<和>来清除js中的数据。但是在上面的示例中,有没有一种好的方法可以防止XSS攻击?
答案 0 :(得分:1)
您可以对此https://bleach.readthedocs.io/en/latest/clean.html使用漂白剂:遍历所有项目并将bleach.clean应用于它们,然后将经过清理的字典作为json返回。
或者您可以使用更好的javascript前端(例如react)来显示输出(默认情况下,现代js框架会转义此类内容)