将敏感信息从Python Flask传递到HTML5 LocalStorage

时间:2015-10-29 20:23:30

标签: javascript python html5 flask

我正在尝试运行一个烧瓶应用程序,我必须在用户的浏览器(localstorage)中存储敏感信息,然后再获取它。问题是,我在服务器端有敏感信息,显然localstorage只能通过Javascript在客户端访问。

所以我的问题是,根据我的情况,最好和最安全的方法是什么?

以下是我正在思考的一个例子......请告诉我这是不好的,为什么,以及这种方法的替代方案。

#This function gets the sensitive info from an AJAX request via the HTML page
@app.route("/sensitive_info/<string:sensitive_info>", methods=["POST"])
def save_sensitive_info(sensitive_info):
    db.save(sensitive_info)
    return redirect(url_for('inject_sensitive_info_to_local_storage'))

# This function creates an HTML page that injects the sensitive info using a javascript function with a jinja variable
@app.route("/sensitive_info")
def inject_sensitive_info_to_local_storage():
    sensitive_info = [RANDOM_SENSITIVE_INFORMATION]
    return render_template("index.html", sensitive_info=sensitive_info)

正如评论所描述的那样,第二个功能将敏感信息放入lcoal存储:

在html中......

localStorage.setItem('sensitive_info', {{sensitive_info}});

对于第一个函数,html页面会向我们的烧瓶发送一个Ajax发送数据:

$.ajax({url: '/sensitive_info' + localStorage.getItem("sensitive_info")), success: function (data) {console.log("Success");}});

1 个答案:

答案 0 :(得分:0)

也许你可以使用flask会话在客户端安全地存储信息。

配置烧瓶应用时,应设置for。存储在客户端会话中的信息是加密的,只有在您知道此密钥时才能读取。将SECRET_KEY设置为相当长的随机数。

SECRET_KEY

然后在您的日常工作中获取您可以添加的秘密信息:

SECRET_KEY = os.urandom(24)