Flask的奥秘二

一、flask中的session

首先我们了解一下session和cookie

  • session被用于记录用户的状态,它是运行在服务器端的,根据session id来获取用户的状态
  • cookie用于记录用户信息的,运行在客户端,与session有一定的关系,session id就是从cookie中获取的,如果用户禁止使用cookie,那么session也会无法使用,除非是手动传递session id

在flask中,session的本质是一个字典

flask中如何使用session来记录用户的数据呢?

  1. 导入session,并要设置配置文件(下一个小节讲)
from flask import session

app = Flask(__name__)
# 这个是为了确保安全性的,可以设置任意值
app.secret_key = ''
  1. 使用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(“文件路径”)
example
setting.py中代码:

SECRET_KEY = '123456'

4、根据类来设置值
app.config.from_object(“文件名.类名”)
example
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:不行了,不行了,太困了,睡觉了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值