为何Flask动态路由可被未指定的参数值正常访问
问题原因
你的update路由视图函数完全没有校验URL路径传入的randomString参数,反而直接将局部变量randomString覆盖为session中存储的值,只要session中存在randomString字段,无论URL路径里传入的是1还是任意其他内容,都会直接返回update.html页面,这就是问题的核心诱因。
修复方案
调整路由逻辑,增加URL参数和session存储值的一致性校验即可,修改后的代码如下:
@app.route('/update/<randomString>') def update(randomString): if 'randomString' in session and randomString == session['randomString']: return render_template('update.html') else: # 校验不通过返回403状态码的错误提示 return 'error...', 403
调整后只有URL中传入的随机字符串和session存储的完全匹配时,才能正常访问页面,随意输入的其他路径都会返回错误。
内容的提问来源于stack exchange,提问作者Alfha
相关产品推荐
相关产品推荐

