我有两个应用程序在同一域的不同端口上运行,都使用 csrf 中间件。
当我登录其中一个应用程序时,POST另一个应用程序的所有提交都会失败。
我认为是因为它们SESSION_COOKIE_DOMAIN是相同的。
我尝试更改SESSION_COOKIE_NAME,但是,两个站点上的'csrftoken'表单POST请求中都使用了 cookie,无论现在有一个具有我指定名称的新 cookie。
当我使用 AJAX 发布信息并从具有新名称的 cookie 获取 csrf 令牌时,它可以工作,但是,表单提交失败,CSRF 验证失败。
我正在尝试让 HTTPS 适用于我的网站,但我正在处理ActionController::InvalidAuthenticityToken所有发布请求。我记录了form_authenticity_param和form_authenticity_token,它们实际上是不同的。
SSL 在弹性负载均衡器上解析,并将非 SSL 请求发送到 Web 应用程序。预期的 CSRF 令牌存储在基于 cookie 的会话中,因此 HTTP 和 HTTPS 的会话似乎需要不同的令牌。在网站上使用 HTTP 时,post/put 请求工作正常。
我已经被这个问题困扰了一段时间。任何意见将是有益的
ssl ruby-on-rails authenticity-token csrf-protection elastic-load-balancer
我有一个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.
我在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>
我以为这会添加标题.但安全团队表示问题并未解决.是否有替代品.对于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 …我正在使用 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()
    ....
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);
            }
        },
我正在关注 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>
如果用户打开两种相同类型的表单,则会出现csrf错误,
我自己是一个具有机器人心态的多才多艺,多任务,绝对的野兽习惯于打开多个标签并以疯狂的方式做事,csrf检查将我变成了一个正常的人.
关于这个还能做什么?
对不起,忘了提到这是关于zend framework的csrf元素
zend-framework csrf zend-form zend-form-element csrf-protection
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>
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 …我正在尝试在Tomcat 8中设置内置的CsrfPreventionFilter。
我想我已经阅读了StackOverflow上有关该主题的所有问题和答案,但仍然无法解决我的问题。
我有home.jsp和reports.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>  
我目前正在使用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 …我正在使用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"
        }
    ]
}
但是,当我在同一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
}
我尝试了其他替代方法
 $input = (array) $this->request->input('json_decode', true);
在控制器的操作中,但这是我在发布请求时收到相同的错误。如果有人遇到同样的问题,请帮助我取得突破。
csrf-protection ×10
csrf ×4
cookies ×2
angular ×1
angularjs ×1
asp.net ×1
asp.net-mvc ×1
c# ×1
cakephp ×1
cakephp-3.x ×1
django ×1
django-csrf ×1
http-headers ×1
interceptor ×1
jquery ×1
jsp ×1
laravel ×1
php ×1
rest ×1
security ×1
ssl ×1
tomcat ×1
x-xsrf-token ×1
zend-form ×1