Python Web Infrastructure - Flask(1)

##########################################################################################
#########Python script: 创建web app. 包含3个页面的处理:主页面,申请页面,审批页面########
##########################################################################################

from flask import Flask
from flask_wtf import FlaskForm
from wtforms import TextField, SubmitField,IntegerField, BooleanField,SelectField,DecimalField,TextAreaField,PasswordField

f_instance=Flask(__name__)

@f_instance.route('/')
def index():
    
    return render_template("home.html" )

@f_instance.route('/apply',methods=['GET','POST'])
def apply_input():
    form=applyform()
    return render_template("apply_input.html",form=form)

@f_instance.route('/approve',methods=['GET','POST'])
def approve_view():
    form=approveform()
    if request.method=='GET':
        apply=request.args
    else
        apply=request.form
    return render_template("approve_view.html", form=form,apply=apply)

f_instance.config['SECRET_KEY']='flasksecret'
if __name__=="__main__":
    f_instance.run(debug=True)

 

####################################################################
##########htlm page: 包含3个页面:主页面,申请页面,审批页面########
####################################################################

########## 主页面 ########

<!DOCTYPE html>
<html lang="en"> 

<body>  
    <h1>Welcome!</h1>
    <a href={{url_for("apply_input")}}>Submit your appllication please.</a>  
  </body>
</html>

 

########## 申请页面 ########
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    <form action={{url_for('approve_view')}} method="GET">
    {{form.hidden_tag()}}
    {{form.apply.label}}{{form.apply}}
    {{form.submit}}    
    </form>
  </body>
</html>

########## 审批页面 ########
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    {% for key, value in apply.items() %}
      {{key}}:{{value}}<br>
    {% endfor %}
    <form action={{url_for('index')}}>    
    {{form.submit}}    
    </form>
  </body>
</html>

上面显示出Flask通过在request中添加参数csrf_token来预防csrf攻击。GET方法中该参数出现在url中,POST方法中该参数出现在form中。

CSRF介绍:https://blog.csdn.net/ru_li/article/details/53301708

CSRF攻击只是盗用用户的身份访问服务器执行非法更新操作,比如冒充用户对银行账户转账,该攻击无法知道用户的身份信息,对于攻击返回的信息也无法查看,所以对于只读操作无效。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值