[12-24]章节的 redraw_from_wish视图中wish的查询结果有超权现象

来源:12-24 撤销礼物与心愿

浅色夏至

2019-06-24

@web.route('/wish/book/<isbn>/redraw')
@login_required
def redraw_from_wish(isbn):
    wish = Wish.query.filter_by(isbn=isbn, launched=False).first_or_404()
    with db.auto_commit():
        wish.delete()
    return redirect(url_for('web.my_wish'))

如果有多个用户对同一本书都有心愿,以isbn作为查询条件的话,有可能查询到别人的心愿,导致别人的心愿被删除。

以下是我自己写的修改,以wish.id作为查询条件,麻烦老师看看行不行:

@web.route('/wish/<int:wid>/redraw')
@login_required
def redraw_from_wish(wid):
    wish = Wish.query.get_or_404(wid)
    with db.auto_commit():
        wish.delete()
    return redirect(url_for('web.my_wish'))
写回答

1回答

7七月

2019-06-24

可能有部分的接口没有加入超权,这个自己加一下。时间有点长,我不太记得逻辑了,但是我看你帖的第一段代码,感觉这样是不是有问题?只凭isbn和lanunched,这好像不能唯一确定一个wish吧?我源代码也是这么写的吗?

0
0

Python Flask高级编程之从0到1开发《鱼书》精品项目

7月老师深入浅出剖析Flask核心机制,和你一起探讨Python高级编程

2735 学习 · 1267 问题

查看课程