一、flask中的session
首先我们了解一下session和cookie
- session被用于记录用户的状态,它是运行在服务器端的,根据session id来获取用户的状态
- cookie用于记录用户信息的,运行在客户端,与session有一定的关系,session id就是从cookie中获取的,如果用户禁止使用cookie,那么session也会无法使用,除非是手动传递session id
在flask中,session的本质是一个字典
flask中如何使用session来记录用户的数据呢?
- 导入session,并要设置配置文件(下一个小节讲)
from flask import session
app = Flask(__name__)
# 这个是为了确保安全性的,可以设置任意值
app.secret_key = ''
- 使用session
# 存入信息(字典添加元素的方法)
session['key'] = value
# 取出信息
data = session.get("key")
二、配置flask的方法
这里只说几种常用的方法
实例化一个Flask对象为app
1、直接调对象的属性来设置值
app.secret_key = " "
2、调用app的config属性来设置值
app.config[“secret_key”] = " "
3、根据py文件来设置值
app.config.from_pyfile(“文件路径”)
setting.py中代码:
SECRET_KEY = '123456'
4、根据类来设置值
app.config.from_object(“文件名.类名”)
setting.py中代码:
class config(object):
SECRET_KEY = '123456'
- …
配置参数的默认值:
{
'DEBUG': get_debug_flag(default=False), 是否开启Debug模式
'TESTING': False, 是否开启测试模式
'PROPAGATE_EXCEPTIONS': None,
'PRESERVE_CONTEXT_ON_EXCEPTION': None,
'SECRET_KEY': None,
'PERMANENT_SESSION_LIFETIME': timedelta(days=31),
'USE_X_SENDFILE': False,
'LOGGER_NAME': None,
'LOGGER_HANDLER_POLICY': 'always',
'SERVER_NAME': None,
'APPLICATION_ROOT': None,
'SESSION_COOKIE_NAME': 'session',
'SESSION_COOKIE_DOMAIN': None,
'SESSION_COOKIE_PATH': None,
'SESSION_COOKIE_HTTPONLY': True,
'SESSION_COOKIE_SECURE': False,
'SESSION_REFRESH_EACH_REQUEST': True,
'MAX_CONTENT_LENGTH': None,
'SEND_FILE_MAX_AGE_DEFAULT': timedelta(hours=12),
'TRAP_BAD_REQUEST_ERRORS': False,
'TRAP_HTTP_EXCEPTIONS': False,
'EXPLAIN_TEMPLATE_LOADING': False,
'PREFERRED_URL_SCHEME': 'http',
'JSON_AS_ASCII': True,
'JSON_SORT_KEYS': True,
'JSONIFY_PRETTYPRINT_REGULAR': True,
'JSONIFY_MIMETYPE': 'application/json',
'TEMPLATES_AUTO_RELOAD': None,
}
三、模板
1、flask使用的是jinja2模板,所以与django的使用方法相似,就是当要调用函数的时候,flask需要括号,而django不需要
2、在前端可以使用管道safe防止xss攻击,在后端可以使用Markup函数防止xss攻击
前端如:{{f()|safe}}
后端如:
def fun():
return Markup("<h1>hahaha</h1>")
@app.route('/')
def index():
return render_template('model.html', f=fun) # 传递一个函数
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
ps:不行了,不行了,太困了,睡觉了.