标签: csrf

为什么要在 POST 请求上要求 CSRF 令牌?

我的理解是,CSRF 可以防止攻击者使用<img>标签让受害者的浏览器发送使用会话 cookie 进行身份验证的请求。鉴于<img>s 总是使用 GET 请求而不是 POST 提交,那么为什么需要在 POST 请求中要求 CSRF 令牌呢?

此外,攻击者无法在无法运行代码的情况下在网页中提交表单(即 XSS 攻击),在这种情况下,他们无论如何都可以绕过您的 CSRF 保护。

security csrf

1
推荐指数
1
解决办法
4169
查看次数

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

我想自动备份需要登录的网站的网页内容。我尝试通过模拟 POST 请求来登录。但我收到错误:

csrf token: CSRF attack detected
Run Code Online (Sandbox Code Playgroud)

以下是我使用的代码的一些摘录:

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
}
Run Code Online (Sandbox Code Playgroud)

我通过获取登录页面并扫描名为 的隐藏输入字段来获取 csrf 令牌signin[_csrf_token]。执行此操作的代码的重要部分如下:

// Finds input field named signin[_csrf_token] and returns value as csrfToken
func 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] = …
Run Code Online (Sandbox Code Playgroud)

python authentication csrf go

1
推荐指数
1
解决办法
3820
查看次数

如何在测试 django 时禁用 csrf?

我在使用 csrf 令牌测试视图时遇到问题。

这段代码

class ViewTests(TestCase):
    def test_bets_view(self):
        login_page = self.client.get('/users/login/')
        print(login_page.content)
Run Code Online (Sandbox Code Playgroud)

返回带有 CSRF 隐藏输入的 HTML。

我需要将这个东西与以前的 HTML 进行比较,

expected_html = render_to_response('login.html',
                                   dictionary={'form': LoginForm()})
Run Code Online (Sandbox Code Playgroud)

没有隐藏的 CSRF 输入。所以断言失败。

如何在测试客户端中禁用 CSRF 渲染?

testing django csrf

1
推荐指数
1
解决办法
5198
查看次数

csurf :我们如何将 csrf 令牌传递给客户端而不将其插入到模板视图中?

我没有使用像把手或视图这样的模板语言(我捆绑了客户端代码),所以我很难弄清楚如何在不将其传递到视图的情况下发送 csrf 令牌。

几乎所有示例都像这样注入令牌服务器端:

app.get('/form', csrfProtection, function(req, res) {
  // pass the csrfToken to the view
  res.render('send', { csrfToken: req.csrfToken() })
})
Run Code Online (Sandbox Code Playgroud)

我不完全确定注入是否是安全机制正常工作所必需的。

注意:我将 cookie 选项设置为 true,并且在 csurf 之前调用了 cookie 解析器 - 但我仍然收到ForbiddenError: invalid csrf 令牌(我相信这是因为我将 _csrf 秘密作为令牌发回,但我猜它发送秘密,_csrf,我们还必须连同它一起发送 csrf 令牌。

题:

是否有其他可接受的方式将 csrf 令牌发送到客户端(例如 headers、cookies、res.body 等)?

security cookies csrf express

1
推荐指数
1
解决办法
1964
查看次数

需要CSRF令牌吗?

好吧,仍然试图围绕它们是什么,并且需要......相信我我已经阅读了很多并且认为我理解但我可能不......

我能得到的最接近的是,当您的网站上有任何形式的登录页面时,绝对需要它们......

我的问题是,当您出于任何原因拥有基本的联系表格和/或填写表格时……您是否需要这些页面的 CSRF 令牌?

php csrf contact-form csrf-protection

1
推荐指数
1
解决办法
1114
查看次数

如何在express、nodejs的所有视图中传递csrf令牌

我有一个使用 ExpressJS 构建的 NodeJS 应用程序。经过安全审查后,我被建议对所有表单和 ajax 提交实施 CSRF。为此,我使用了csurf包。为此,我们需要在每个表单页面中传递 CSRF 令牌,然后将其与表单提交数据一起返回。

首先,我尝试对包含表单的页面单独执行此操作。但后来我意识到我的页眉中有一个搜索表单,它出现在所有页面上。现在,有什么方法可以将 CSRF 令牌传递给我的所有视图,而无需为每个请求显式传递它。这是我用来呈现表单页面的通用代码。我使用 Jade/Pug 进行渲染:

router.get('/createcampaign', checkUserSession, middleWare2, middleware3, function(req, res){
    var pageInfo = {};
    pageInfo.title = 'Create New Campaign';
    pageInfo.projects = req.projects;
    pageInfo.session = req.session;
    pageInfo.bodyid = 'createcampaign';
    pageInfo.project_id = req.flash('project_id');
    pageInfo.bodyclass = 'bluebody';
    pageInfo.account = req.account;
    pageInfo.grammars = req.grammars;
    pageInfo.csrfToken = req.csrfToken; //Here I pass csrfToken to view

    res.render( 'users/createcampaign', pageInfo );
});//createcampaign get route
Run Code Online (Sandbox Code Playgroud)

如您所见,我需要将 csrfToken 与视图上下文对象一起传递。如何全局传递它以便将其传递到所有视图?

另外,在所有页面上发送此 csrfToken 并在需要的地方使用它是否安全?

谢谢。

javascript forms csrf node.js express

1
推荐指数
1
解决办法
3029
查看次数

Django:csrf_exempt 不起作用

Django: 1.9.7 / Python3.5.1

视图.py

from django.views.decorators.csrf import csrf_exempt
from django.http import JsonResponse

class OrderPayCheckView(View):

    @csrf_exempt
    def post(self, request, *args, **kwargs):
        return JsonResponse(
            data={
                "valid": False,
            }
        )
Run Code Online (Sandbox Code Playgroud)

当我POST通过 向这个 url发送请求时POSTMAN,它显示, 403 Forbidden-CSRF authentication Fail有点东西(我真的想显示所有错误,但语言是韩语)

我在我的测试服务器中测试了它,它有自己的 url。

为什么会发生?

django csrf

1
推荐指数
1
解决办法
5830
查看次数

在 Laravel 中找不到 CSRF 令牌

我收到此 CSRF 令牌错误,当我环顾四周时,每个人都说我只需要在提交数据时使用 {{ csrf_field() }}。过去,它运行良好,但一段时间后,出现此错误,我无法提交数据,甚至根本无法编辑数据。有人可以在这里帮助我吗谢谢。

在此处输入图片说明

请告诉我我哪里出错了?我想在这里做什么

edit.blade.php(这是 csrf 部分)

        <form class="form-horizontal" method="post" action="{{ url('/user/show/'.$object->id) }}">

          {{ method_field('PUT')  }}
          {{ csrf_field() }}

         <div class="input-group">
            <label><b>Name/NRIC:</b></label>
              <input type="text" name="Name" value="{{ $object->Name }}" class="form-control">
        </div>
</form>
Run Code Online (Sandbox Code Playgroud)

app.js(laravel 默认不是我的,这是我看到的)

/**
 * We'll load the axios HTTP library which allows us to easily issue requests
 * to our Laravel back-end. This library automatically handles sending the
 * CSRF token as a header based on the value of the "XSRF" token cookie.
 */

window.axios = …
Run Code Online (Sandbox Code Playgroud)

csrf laravel

1
推荐指数
1
解决办法
9104
查看次数

Django csrf 中间件令牌显示在 url 中安全吗?

当发出 GET 请求时,我注意到我的 csrf 令牌被附加到我的 url 中。这安全吗?

django csrf

1
推荐指数
1
解决办法
897
查看次数

Laravel 如何在通过 axios 请求时自动添加 X-XSRF-TOKEN?

我有一个使用相同auth中间件的 API 。因此,当我成功登录时,我被重定向到一个页面,该页面从同一应用程序的 API 中获取数据。在我的app.blade.php我只添加了 axios 和一个简单的 html 并注意,除了在我的表单中的登录页面之外csrf-token,我的标题中甚至没有元数据。@csrf

这是我的app.blade.php布局

<html lang="en">
<head>
  <meta charset="UTF-8">
</head>
<body>
  @yield('content')

  <script src="{{ asset('js/axios.min.js') }}"></script>
  <script>
    const http = axios.create({
      baseURL: '/api'
    });

    http.interceptors.request.use((request) => {
      console.log('Starting Request', request);
      return request;
    });
  </script>

  @stack('scripts')
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在我的其中一页中:

@extends('layouts.app')

@section('content')
<div>
  <h1>Hello World</h1>
</div>
@endsection

@push('scripts')
<script>
  async function test() {
    const { data } = await http('/some-page');

    // I'm getting a …
Run Code Online (Sandbox Code Playgroud)

javascript php csrf laravel laravel-5

1
推荐指数
1
解决办法
1648
查看次数