stacklens / dusai-blog

杜赛的博客的评论区。详情见 Issue。
2 stars 0 forks source link

article/45/ #20

Open stacklens opened 4 years ago

stacklens commented 4 years ago

https://www.dusaiphoto.com/article/45/

stacklens commented 4 years ago

旧评论区读者评论集中帖:


Q:如果在模板中已经进行了鉴权,用户不匹配或者未登录就不显示修改及删除文章按钮,那在视图里做不做鉴权应该没影响了吧,哪个用户登录的信息又不同通过url虚造,url里只是显示哪篇文章而已。是不是我理解有误。

A:不是这样的。重要的操作必须在后端鉴权,即使模板中已经鉴权过了。否则“聪明的坏用户”可以直接通过 url 操作数据库。


Q:博主 你好,我想询问一下,再文章的详情页面detail.html文件中,使用article.author==user 就可以判断是否是用户本人 user 是怎么传递的?

A:Django 默认配置中的中间件帮你设置的。


T:小白打卡:

def article_detail(request, id):
    article = ArticlePost.objects.get(id=id)

    if request.user != article.author:
        article.total_views += 1
        article.save(update_fields=['total_views'])

    article.body = markdown.markdown(article.body, extensions=[
        'markdown.extensions.extra',
        'markdown.extensions.codehilite',
    ])

    context = {'article': article}
    return render(request, 'article/detail.html', context)

这样的话就可以保证作者每次修改和阅读不会给自己添加阅读量啦

kamengyi commented 3 years ago

如果有“坏用户”直接输入url地址来使坏,能否举例来说明下。

jwcen commented 3 years ago

如果有“坏用户”直接输入url地址来使坏,能否举例来说明下。

aqqwvfbukn commented 3 years ago

如果有“坏用户”直接输入url地址来使坏,能否举例来说明下。

stacklens commented 3 years ago

如果有“坏用户”直接输入url地址来使坏,能否举例来说明下。

就是直接在浏览器里输入地址啊。没有 UI 入口也一样的

liuzzz2017 commented 2 years ago

大概想了一下,先得搞定CSRF,这个有工具,然后我得猜到你用这个/article_safe_delete/15/路径的POST方式,然后我就可以删除了,所以还是严谨点,有利于安全

james-wangx commented 2 years ago

大概想了一下,先得搞定CSRF,这个有工具,然后我得猜到你用这个/article_safe_delete/15/路径的POST方式,然后我就可以删除了,所以还是严谨点,有利于安全

什么工具可以搞定 Django 的 csrftoken?