跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 改了下 gitalk,增加了匿名评论功能
未分類
2 9 月 2020

改了下 gitalk,增加了匿名评论功能

改了下 gitalk,增加了匿名评论功能

資深大佬 : bigbyto 13

gitalk 是个很有创意的项目,不过它的缺点也很明显,安全性欠妥。之前已经有人在 V2EX 讨论过 github 权限粒度过高,授权时容易被恶意利用的问题。前几天给博客换评论系统,发现 gitalk 还是很不错的,于是改了一下。

匿名评论主要的思路是:

  1. 创建一个新的 github 账号
  2. 获取该账号的 personal access token,scope 选中 user 和 repo
  3. 把该 token 存放于服务器,编写一条 api
  4. 修改 gitalk 的 ui,新增一个匿名评论按钮,用户点击时把数据发送到我们的 api,让 server 去完成创建评论的请求。

当然也可以直接把 personal access token 放到前端直接请求,这样很不安全就是了。我还把它的授权流程也放到了 server 上,解决在 client 暴露 secret 的问题。

大致就是这样,懒得使用第三方的评论系统。gitalk 原生支持 markdown 和它的 ui 都是非常吸引人的~更详细的可以看看我博客的介绍。

https://wiyi.org/gitalk-anonymous-comment.html

效果:

改了下 gitalk,增加了匿名评论功能

大佬有話說 (12)

  • 資深大佬 : yanshenxian

    > 1 整个 OAuth 流程放在前端,暴露了 client_id 和 client_secret
    > 首先我把授权流程放到了 server 端,解决第一个和第三个问题。

    这个确实有想法

  • 資深大佬 : yanshenxian

    我觉得 client_id 和 client_secret 暴漏了其实问题也不大。参考 https://github.com/gitalk/gitalk/issues/150
    用户要想获取其他人的 Authorization Code 并不容易。相反博客管理者想要获取授权评论用户的 token 很容易。

  • 資深大佬 : ochatokori

    用 gitalk 难道不是为了省去后端服务器吗
    既然都有后端服务器的直接服务器放 client_secret 不就行了

    推荐用 https://utteranc.es/

  • 主 資深大佬 : bigbyto

    @yanshenxian
    代码我是用 node 的写的塑料代码

  • 主 資深大佬 : bigbyto

    @yanshenxian client_secret 毕竟是属于私密的数据,能不暴露不暴露更好。确实如你所说博客管理者能获取 accessToken,基于这个考虑才加入了匿名的功能。

  • 主 資深大佬 : bigbyto

    @ochatokori
    @yanshenxian

    utterances 之前没了解过,有时间去研究一下。如果能兼容现有的以后花时间折腾一下,不行的话就暂时这么用着了。

  • 資深大佬 : ochatokori

    @yanshenxian 用户一旦同意授权(证明用户信任这个 client_id 和 client_secret),任何人都可以通过泄露的 client_id 和 client_secret 获取那个用户的 token,只要用户访问了攻击者的网站

  • 資深大佬 : yanshenxian

    @ochatokori 就算暴漏了,只有用户显示点击登录才能拿到 token 吧,这样和攻击者用自己的 client_id 和 client_secret 有什么区别,难道还有其他办法直接获取??

  • 資深大佬 : stebest

    这样就创建了很多无意义的僵尸号,是不是有点浪费资源。
    利用 github 存储评论可以算正当使用,但这个不停的创建无意义的小号,就算滥用了吧?点匿名评论时候切换到别的评论系统,我觉得还是挺方便的,我自己也是这样,感觉效果还行。

  • 資深大佬 : ruanimal

    没啥问题,反正大部分人博客没几个评论。。。

  • 主 資深大佬 : bigbyto

    @stebest
    还不至于到滥用的程度,把这个当作个人的小号来用即可。

  • 資深大佬 : ochatokori

    @yanshenxian #8 只有第一次要点登录(就是在博客那个地方),之后如果访问攻击者的网站,攻击者的网站应该就可以直接用 client_id&client_secret 拿到 token 了(我不是很确定 github 的 oauth 有没有判断 referrer)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具