标签: csrf

在 React Native 中获取 csrf 令牌

我已经构建了 django 服务器来管理我的数据,然后我有桌面 React 应用程序,我可以在其中创建新用户/登录/发布数据,它工作完美,它基于 csrf 令牌验证,没有问题。不过,我还有反应本机应用程序,它应该让用户登录并获取属于他的数据。这里有一个问题,如何在 React Native 中获取 CSRF 令牌?在桌面应用程序中,它看起来或多或少像这样,但我不知道如何登录反应本机,因为我不能简单地使用 csrf 令牌获取 Cookie。

componentDidMount() {
    const csrfToken = Cookies.get('csrftoken')
    this.setState({csrfToken})

  }

    loginHandler = login_data => {
    this.setState({
      user: login_data.user,
      password: login_data.password
    }, () => {
      const auth = {
        "username": this.state.user,
        "password": this.state.password
      }

      fetch("http://localhost:8000/data/", {
        method: 'POST',
        credentials: 'include',
        headers: {
          "X-CSRFToken": this.state.csrfToken,
        },
        body: JSON.stringify(auth)
      })
        .then((res) => res.json())
        .then(resp => console.log(resp))
        .then(() => this.getData())
        .catch(() => this.setState({
          user: "",
          passowrd: ""
        }))
    })
  };
Run Code Online (Sandbox Code Playgroud)

django csrf reactjs react-native

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

服务器到服务器通信中是否需要防伪令牌?

我有一个基于 ASP.NET Core 3.1 的 REST API。该API将被其他服务器调用,目前没有客户端应用程序调用该API。

在这种情况下我需要防伪令牌吗?另外,如果需要,如何在服务器到服务器通信场景中注入防伪令牌?

security csrf antiforgerytoken asp.net-core-webapi websecurity

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

如何在 Swagger UI 中包含 X-XSRF-TOKEN 标头?

我有一个 .NET Core 3.1 Web API,我想为其添加 XSRF 保护。X-XSRF-TOKEN因此,我现在需要在所有端点上的 HTTP 标头中添加防伪令牌,如此处所述。JavaScript 客户端通过访问端点来获取令牌/antiforgerytoken,该端点设置XSRF-TOKEN包含该令牌的 cookie。这一切都很好,但正如人们所期望的那样,“尝试一下!” Swagger UI 中的功能不再起作用,因为请求缺少X-XSRF-TOKENHTTP 标头。有没有办法让 SwaggerUI 自动调用端点/antiforgerytoken并将令牌包含在正在执行的请求中?

csrf swagger swagger-ui swashbuckle asp.net-core

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

我是否需要在基于 cookie 的 API 中使用 CSRF 令牌?

我在 Next.js (NextAuth.js) 中有一个 API,只有前端会使用它。它使用 cookie 进行身份验证。我的问题是恶意网站是否可以使用 CSRF 更改用户的数据?我应该实施 CSRF 令牌还是可以在没有它的情况下阻止恶意网站更改数据?

security csrf next.js next-auth

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

这是防止 Next.js 应用程序中发生 CSRF 攻击的有效方法吗

我正在构建一个 Next.js 应用程序,在其中一个页面上,我需要调用其中一个路由/api。

调用此 API 路由会执行状态更改操作,因此确保调用不是来自试图冒充我的用户的攻击者非常重要。

以下面为例:

fetch('/api/grantPermissions', {
  headers: ...,
  method: 'POST',
  body: JSON.stringify({resource: 'someresourceid', permission: 'somepermission'})
})
Run Code Online (Sandbox Code Playgroud)

我注意到没有很多解决方案可以保护 Next.js API 路由免受 CSRF 攻击,所以我考虑的是以下内容:

  1. 当用户登录时,会生成一个随机的32字节十六进制字符串
  2. 它存储在会话对象中(使用iron-session)
  3. 使用 getServerSideProps(),将存储在会话中的字符串注入到需要进行 fetch 调用的页面中
  4. 当进行 fetch 调用时,CSRF 令牌会附加到请求中(例如在正文或自定义标头中)
  5. 然后路由/api/grant检查提供的 CSRF 令牌是否与会话中的相同

这是使用同步器令牌模式防止 CSRF 攻击的安全方法吗?这种方法可能会导致哪些漏洞?

http csrf next.js csrf-token

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

CSRF 令牌与会话 Cookie

AFAIK,我们将 CSRF 定义为安全漏洞,恶意攻击者使用各种脚本,在未经用户同意的情况下,使用户执行特定于用户的操作。例如,我们的恶意攻击者诱骗用户进入运行以下代码的网站来更改用户的电子邮件地址。

<form action="https://examplefornonsafewebsite.com/email/change" method="POST">
    <input type="hidden" name="email" value="malicioususer@example.com">
</form>

<script>
    document.forms[0].submit();
</script>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果网站没有 CSRF 保护,则用户的电子邮件地址将因用户采取的操作而在未经用户同意的情况下被更改。我的问题是,“CSRF 令牌与会话 cookie 的区别是什么?” 当恶意攻击者进行用户更改时,如何访问会话 cookie 而不能访问 CSRF 令牌?毕竟,既然这是从用户的浏览器完成的,那么 CSRF 令牌不应该也可以访问吗?

csrf

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

使用 origin 和 x-forwarded 时,开发模式下 SvelteKit 出现“禁止跨站点 POST 表单提交”错误

我有一个 SvelteKit 应用程序运行在http://localhost:5173(进行本地开发时),前面有一个 Nginx 运行在http://localhost:8057,提供一些静态文件和代理请求,这些请求必须由 SvelteKit 处理。

我有一个登录表单,http://localhost:8057/login当我提交它时,我得到一个网页,其中只有“禁止跨站点 POST 表单提交”。

我尝试使用ORIGIN环境变量,按照禁止跨站点 POST 表单提交和https://kit.svelte.dev/docs/adapter-node#environment-variables。这是我的.env文件:

ORIGIN=http://localhost:8057
Run Code Online (Sandbox Code Playgroud)

env如果我从import { env } from '$env/dynamic/private';服务器端登录,我可以在我的环境中看到这个环境变量。但我仍然得到“禁止跨站点 POST 表单提交”。

我还尝试在启动 SvelteKit (使用 )时传递环境变量ORIGIN=http://localhost:8057 npm run dev,但结果相同。

因为 SvelteKit 在发送此错误时不会记录太多内容,所以我只能尝试猜测 SvelteKit 内部发生了什么,但如果在 Nginx 中我添加它,那么proxy_set_header Origin http://localhost:5173;它就可以工作,所以很清楚 SvelteKit 在这里期望什么。但我不想这样做,因为它几乎相当于禁用 CSRF 保护。

然后我尝试使用https://kit.svelte.dev/docs/adapter-node#environment-variables中建议的其他方法,即使用x-forwarded-proto和x-forwarded-host,所以现在这是我的.env文件(我再次可以肯定地看到如果我将这些值记录在我的应用程序中):

PROTOCOL_HEADER=x-forwarded-proto
HOST_HEADER=x-forwarded-host
ORIGIN=http://localhost:8057
Run Code Online (Sandbox Code Playgroud)

在我的 …

csrf cross-domain sveltekit

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

使用骨干网和node.js的CSRF防御

我正在使用骨干网和node.js创建一个网站,并且认为默认情况下没有针对CSRF的保护措施。将主干与node.js结合使用时,是否有针对CSRF进行投影的标准方法?谢谢

csrf node.js backbone.js

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

Symfony2 CSRF令牌无效.请尝试重新提交表单

我有一个不断获取"CSRF令牌无效的表单.请尝试重新提交表单." 我一直无法找到原因.

我知道这很简单.任何帮助,将不胜感激.

在控制器中我有这个:

public function settingsAction()
{   
    $request = $this->getRequest();

    /* @var $user User */
        $user = $this->get('security.context')->getToken();

    $settingsForm = $this->createForm(new SettingsFormType(), array($user));
    $billingForm = $this->createForm(new BillingFormType(), array($user));
    $accountForm = $this->createForm(new AccountFormType(), array($user));



        return $this->render('DeductrDeductrBundle:Settings:settings.html.twig', array(
                'settingsForm' => $settingsForm->createview(),'billingForm' => $billingForm->createview(),'accountForm' =>$accountForm->createview(),));
}

public function createAction()
{
    $em = $this->getDoctrine()->getEntityManager();

    $form = $this->createForm(new RegistrationFormType('Deductr\UserBundle\Entity\User'));

    $form->bind($this->getRequest());

    if ($form->isValid()) {
        $user = $form->getData();

        $em->persist($user);
        $em->flush();

        return $this->redirect('/settings');
    }
Run Code Online (Sandbox Code Playgroud)

.twig文件包含:

{% extends 'DeductrDeductrBundle:Base:base.html.twig' %}


{% block body %}
<div name='personal' style="padding-left:25px; width:600px;"> …
Run Code Online (Sandbox Code Playgroud)

webforms csrf symfony

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

禁用单个表单的csrf标记

我有一个html表单,将发布数据从另一个位置发送到django Web应用程序.如何禁用该特定表单或请求的csrf令牌检查?

django csrf

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