跳到主要内容

CSRF 示例

Github StackBlitz

跨站请求伪造 (CSRF) 漏洞示例。

要求

安装 Go 模块

与任何 golang 项目一样,您需要下载并安装项目运行所需的模块。切换到“csrf”目录

cd csrf

然后

go mod vendor && go mod download && go mod tidy

此命令会将运行项目所需的 golang 依赖项安装到名为 vendor 的新目录中。

模块安装完成后,您可以像这样运行项目

go run main.go

或者

go run main.go withoutCsrf

如果一切正常,您应该看到以下内容

Server started and listening at localhost:3000

尝试演示

启动没有 csrf 的服务器,看看这些攻击的危险性

go run main.go withoutCsrf

打开您的浏览器并导航到 localhost:3000

使用测试账户登录

  • 用户名: bob
  • 密码: test

在新标签页中,导航到 localhost:3001 查看一些 CSRF 漏洞利用示例。您会注意到每次加载该页面时余额都会减少。这是因为该页面成功利用了 CSRF 漏洞。

查看“已修复”版本

要查看此演示的 csrf 版本,只需按 CTRL + C 停止服务器进程,然后运行

go run main.go

再次导航到 localhost:3000 并登录测试账户。

再次尝试包含 CSRF 漏洞利用的页面:localhost:3001

您现在会注意到账户余额没有变化。

深入了解

这里有一些有用的链接,您可以从中了解更多关于此主题的信息