为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Go/Python 使用 CSRF 令牌登录站点

使用 Go/Python 使用 CSRF 令牌登录站点

Go
森林海 2021-07-15 14:11:43
我想从需要登录的站点自动备份 Web 内容。我尝试通过模拟 POST 请求登录。但我收到错误:csrf token: CSRF attack detected以下是我使用的代码的一些摘录:func postLoginForm(csrfToken string) {    values := make(url.Values)    values.Set("signin[username]", "myusername")     values.Set("signin[password]", "mypassword")     values.Set("signin[_csrf_token]", csrfToken)    resp, err := http.PostForm("https://spwebservicebm.reaktor.no/admin/nb", values)    dumpHTTPResponse(resp) // show response to STDOUT}我通过获取登录页面并扫描它以查找名为 的隐藏输入字段而获得的 csrf 令牌signin[_csrf_token]。执行此操作的代码的重要部分如下:// Finds input field named signin[_csrf_token] and returns value as csrfTokenfunc handleNode(n *html.Node) (csrfToken string, found bool) {    if n.Type == html.ElementNode && n.Data == "input" {        m := make(map[string]string)        for _, attr := range n.Attr {            m[attr.Key] = attr.Val        }        if m["name"] == "signin[_csrf_token]" {            return  m["value"], true        }    }    for c := n.FirstChild; c != nil; c = c.NextSibling {         if csrfToken, found = handleNode(c); found {             return          }           }    return "", false}我不需要使用 Go,那只是因为我最熟悉它。使用 python 也可能是一个解决方案,但我没有更多的运气。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 245 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信