标签: csrf-protection

同一域上的多个 Django 站点 - CSRF 失败

我有两个应用程序在同一域的不同端口上运行,都使用 csrf 中间件。

当我登录其中一个应用程序时,POST另一个应用程序的所有提交都会失败。
我认为是因为它们SESSION_COOKIE_DOMAIN是相同的。

我尝试更改SESSION_COOKIE_NAME,但是,两个站点上的'csrftoken'表单POST请求中都使用了 cookie,无论现在有一个具有我指定名称的新 cookie。

当我使用 AJAX 发布信息并从具有新名称的 cookie 获取 csrf 令牌时,它可以工作,但是,表单提交失败,CSRF 验证失败。

django cookies csrf django-csrf csrf-protection

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

Rails InvalidAuthenticityToken 与 HTTPS + ELB

我正在尝试让 HTTPS 适用于我的网站,但我正在处理ActionController::InvalidAuthenticityToken所有发布请求。我记录了form_authenticity_paramform_authenticity_token,它们实际上是不同的。

SSL 在弹性负载均衡器上解析,并将非 SSL 请求发送到 Web 应用程序。预期的 CSRF 令牌存储在基于 cookie 的会话中,因此 HTTP 和 HTTPS 的会话似乎需要不同的令牌。在网站上使用 HTTP 时,post/put 请求工作正常。

我已经被这个问题困扰了一段时间。任何意见将是有益的

ssl ruby-on-rails authenticity-token csrf-protection elastic-load-balancer

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

添加安全标头以帮助防止c#asp.net中的注入攻击

我有一个C#asp.net应用程序.它被发送到安全评估,下面是风险.

-Missing "Content-Security-Policy" header
-Missing "X-Content-Type-Options" header
-Missing "X-XSS-Protection" header 
-It was observed that server banner is getting disclosed in HTTP response.
-It was observed that service version is getting disclosed in HTTP response.
Run Code Online (Sandbox Code Playgroud)

我在web.cofig文件中有以下代码

<httpProtocol>
<customHeaders>

<remove name="X-Powered-By"/>
<add name="X-Frame-Options" value="DENY"/>
<add name="X-XSS-Protection" value="1; mode=block"/>
<add name="X-Content-Type-Options" value="nosniff "/>

</customHeaders>
</httpProtocol>
Run Code Online (Sandbox Code Playgroud)

我以为这会添加标题.但安全团队表示问题并未解决.是否有替代品.对于Banner的披露,我无法访问服务器.我可以在应用程序中修复此问题.经过研究我发现:在Global.asax里面我有这个代码:

protected void Application_PreSendRequestHeaders()
    {
        // Response.Headers.Remove("Server");
        Response.Headers.Set("Server", "My httpd server");
        Response.Headers.Remove("X-AspNet-Version");
        Response.Headers.Remove("X-AspNetMvc-Version");
    }

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        var app = sender as HttpApplication;
        if …
Run Code Online (Sandbox Code Playgroud)

c# asp.net security http-headers csrf-protection

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

Ajax POST 中不存在 __RequestVerificationToken

我正在使用 jQuery DataTales 从 MVC5 请求 POST URL 并尝试添加防伪令牌。我已将其添加到标头和请求正文中,但仍然收到 500 错误:“所需的防伪表单字段“__RequestVerificationToken”不存在。”

表格:

<form id="my-units-form" action="@Url.Action("MyUnitsResults", "Provider")" class="form-horizontal criteria well well-sm">
    @Html.AntiForgeryToken()
    ....
Run Code Online (Sandbox Code Playgroud)

JavaScript:

$userDt = $('#users-table')
    .DataTable({
        serverSide: true,
        ordering: false,
        searching: true,
        ajax: {
            "url": url,
            "type": "POST",
            'contentType': 'application/json',
            "dataType": "json",
            headers: { '__RequestVerificationToken': $('form input[name=__RequestVerificationToken]').val() },
            data: function (d) {
                d.__RequestVerificationToken= $('form input[name=__RequestVerificationToken]').val();

                return JSON.stringify(d);
            }
        },
Run Code Online (Sandbox Code Playgroud)

标头

有效载荷

asp.net-mvc jquery antiforgerytoken csrf-protection

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

@csrf 在 Laravel 5.4 中不起作用

我正在关注 Laravel 上的本教程,我注意到我无法使用 @csrf 命令,但其他人可以有效地使用它。但是,我可以使用 {{ csrf_field() }} 作为 csrf 令牌。我想知道原因。谢谢。

这是我使用 @csrf 命令的屏幕截图:这里的图片

这是我的 index.blade.php

       <form action="{{ route('contact.store') }}" method="post">

            @csrf

            <div class="col-md-6 mb-3">
                <label for="username">Username:</label>
                <input class="form-control" type="text" name="name" id="username" placeholder="Username | Email | Phone Number" required>
                <div class="invalid-feedback">
                    Please provide a username
                </div>
            </div>

            <div class="col-md-6 mb-3">
                <label for="password">Password:</label>
                <input class="form-control" type="password" name="name" id="password" placeholder="" required>
                <div class="invalid-feedback">
                    Please provide a password
                </div>
            </div>

            <div class="col-md-6 mb-3">
                <input type="submit">
            </div>
        </form>
Run Code Online (Sandbox Code Playgroud)

php csrf csrf-protection laravel

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

将csrf添加到表单中是不是有根本错误?

如果用户打开两种相同类型的表单,则会出现csrf错误,

我自己是一个具有机器人心态的多才多艺,多任务,绝对的野兽习惯于打开多个标签并以疯狂的方式做事,csrf检查将我变成了一个正常的人.

关于这个还能做什么?

对不起,忘了提到这是关于zend framework的csrf元素

zend-framework csrf zend-form zend-form-element csrf-protection

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

将AngularJS与SpringSecurity3.2一起用于CSRF

AngularJS

的index.html

<head>
    <meta name="_csrf" content="${_csrf.token}"/>
    <!-- default header name is X-CSRF-TOKEN -->
    <meta name="_csrf_header" content="${_csrf.headerName}"/>
</head>
Run Code Online (Sandbox Code Playgroud)

SpringSecurity 3.2

Spring使用HttpSessionCsrfTokenRepository,默认情况下为CSRF提供标题名称为 X-CSRF-TOKEN,但Anuglar约定为 X-XSRF-TOKEN

我想扩展HttpSessionCsrfTokenRepository并覆盖标题名称,但由于它标记为final,我最终实现了自定义标记库.

@Component
public class CustomCsrfTokenRepository implements CsrfTokenRepository {

  public static final String CSRF_PARAMETER_NAME = "_csrf";

  public static final String CSRF_HEADER_NAME = "X-XSRF-TOKEN";

  private final Map<String, CsrfToken> tokenRepository = new ConcurrentHashMap<>();

  public CustomCsrfTokenRepository() {
    log.info("Creating {}", CustomCsrfTokenRepository.class.getSimpleName());
  }

  @Override
  public CsrfToken generateToken(HttpServletRequest request) {
    return new DefaultCsrfToken(CSRF_HEADER_NAME, CSRF_PARAMETER_NAME, createNewToken());
  }

  @Override
  public void saveToken(CsrfToken …
Run Code Online (Sandbox Code Playgroud)

csrf spring-security csrf-protection angularjs

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

在Tomcat中设置CsrfPreventionFilter

我正在尝试在Tomcat 8中设置内置的CsrfPreventionFilter。

我想我已经阅读了StackOverflow上有关该主题的所有问题和答案,但仍然无法解决我的问题。

我有home.jspreports.jsp

home.jsp(一旦受到response.encodeUrl())的URL 是 www.example.com/home.jsp?org.apache.catalina.filters.CSRF_NONCE=5E4BD8FEE1B4CC1DA79D874905015911

这是正确呈现的,不是因为随机数正在工作,而是因为我设置home.jsp为EntryPoint。但是,似乎确实可以证明CSRFPreventionFilter已启动并且正在运行,并且可以成功生成随机数。

如果按CTRL + N,然后键入www.example.com/reports.jsp,然后添加相同的现时值,即www.example.com/reports.jsp?org.apache.catalina.filters.CSRF_NONCE=5E4BD8FEE1B4CC1DA79D874905015911得到页面403。reports.jsp未设置为EntryPoint,但我希望它能够成功呈现,因为它已随现时值一起提供。 。

我究竟做错了什么?

(我的问题有点类似于在tomcat 6.0.32中使用CSRF过滤器时出现403错误;但是我觉得答案可能不是CSRFPrevention过滤器的设置方式,而是我正在处理的方式中的一些问题内部的响应/请求,类似于@ 无法通过tomcat验证对CSRF令牌的发布请求中的 @Pankaj Kumar的答案 )

更新

这是web.xml配置

<filter>
    <filter-name>CSRFPreventionFilter</filter-name>
    <filter-class>org.apache.catalina.filters.CsrfPreventionFilter</filter-class>
        <init-param>
            <param-name>entryPoints</param-name>
            <param-value>/images/404.JPG,/login.jsp,/home.jsp,/images/im_login.gif,/js/events.js,/js/menu.js,/js/amount_validation.js,/js/calendar.js,/js/toolbar.js,/js/tablesort.js,/js/scripts.js,/css/style.css</param-value>
        </init-param>
</filter>

<filter-mapping>
    <filter-name>CSRFPreventionFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>  
Run Code Online (Sandbox Code Playgroud)

jsp tomcat csrf-protection

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

如何在angular4中发送带有响应头的“ X-CSRF-TOKEN”

我目前正在使用Angular4应用程序。现在,我要实现XSRF保护。在Response标头Cookie中,我得到“ XSRF-TOKEN”,并且需要在下一个Request标头Cookie中发送“ X-XSRF-TOKEN”。如Angular官方文档中所述,Angular正在处理此问题。但是就我而言,angular并没有处理它。因此,我创建了以下自定义XsrfInterceptor,以将“ X-XSRF-TOKEN”附加到响应头。

import { NgModule, Injectable } from '@angular/core';
import { Observable } from "rxjs/Observable";
import { HttpRequest, HttpHandler, HttpEvent, HttpXsrfTokenExtractor, HttpInterceptor } from "@angular/common/http";

@Injectable()
export class XsrfInterceptor implements HttpInterceptor {

    constructor(private tokenExtractor: HttpXsrfTokenExtractor) {
    }

    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        const headerName = 'X-XSRF-TOKEN';
        console.log("xsrf intercepter called");
        let requestToForward = req;
        let token = this.tokenExtractor.getToken() as string;
        console.log(token);
        if (token !== null) {
            requestToForward = req.clone({ setHeaders: {headerName: token } });
        }
        return …
Run Code Online (Sandbox Code Playgroud)

cookies interceptor csrf-protection x-xsrf-token angular

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

CakePHP 3 API的POST请求不起作用

我正在使用CakePHP 3.x文档开发API。为了开发此API,我使用了他们的官方文档:https : //book.cakephp.org/3.0/en/development/rest.html

当我尝试使用url http://localhost/healthcare_portal/eapi/applicants/index.json上的GET请求访问我的api时,我得到了预期的json结果

{
    "applicants": [
        {
            "applicant_id": 1,
            "name": "Manender"
        },
        {
            "applicant_id": 2,
            "name": "mayank"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

但是,当我在同一URL http://localhost/healthcare_portal/eapi/applicants/index.json上使用POST请求访问我的api时,出现CSRF不匹配令牌错误。在这种情况下,来自API的响应为

{
    "message": "Missing CSRF token cookie",
    "url": "/applicants/index.json",
    "code": 403,
    "file": "/opt/lampp/htdocs/healthcare_portal/eapi/vendor/cakephp/cakephp/src/Http/Middleware/CsrfProtectionMiddleware.php",
    "line": 191
}
Run Code Online (Sandbox Code Playgroud)

我尝试了其他替代方法

 $input = (array) $this->request->input('json_decode', true);
Run Code Online (Sandbox Code Playgroud)

在控制器的操作中,但这是我在发布请求时收到相同的错误。如果有人遇到同样的问题,请帮助我取得突破。

rest cakephp csrf-protection cakephp-3.x

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