标签: csrf-protection

CSRF 令牌多标签问题

我正在我的网站上的每个 post 方法上实现 CSRF 令牌。但是当我在不同的选项卡中访问我的网页时,令牌在两个页面和令牌不匹配上都会发生变化。我的令牌存储在 DOM 中,我正在使用 SESSION 匹配令牌。这个怎么解决。?

php security post csrf csrf-protection

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

使用CSRF测试发布方法

我正在尝试编写一种测试方法来注册我的狂欢应用程序。看下面的代码

package tests

import "github.com/revel/revel"
import "github.com/PuerkitoBio/goquery"
import "bytes"
import "net/url"

//import "net/http"

var csrf string

type AccountTest struct {
    revel.TestSuite
}

func (self *AccountTest) Before() {
    //println("Set up")
}

func (self *AccountTest) TestGetSignUp() {
    self.Get("/signup")
    site := bytes.NewBuffer(self.ResponseBody)
    doc, _ := goquery.NewDocumentFromReader(site)
    doc.Find("input").Each(func(i int, s *goquery.Selection) {
        name, exists := s.Attr("name")
        if name == "csrf_token" && exists {
            csrf, _ = s.Attr("value")
        }
    })
    self.AssertOk()
    self.AssertContains("Sign Up")
    self.AssertContentType("text/html; charset=utf-8")
}

func (self *AccountTest) TestPostSignUp() {
    self.PostForm("/signup", url.Values{
        "name":         {"cormier"}, …
Run Code Online (Sandbox Code Playgroud)

go csrf-protection revel

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

CSRF 因 Django 应用程序服务的多个域(不是子域)而失败

我有一个 Django 应用程序,主要在 domain.com 下提供服务,但也在其他域下(主要用于测试)。我还有一个单独的子域,为用户提供 Web 应用程序客户端代码。

API 的主域是api.domain.com,并且应用程序正在部署到apps.domain.com. 登台服务器不在同一个域名下;他们住在stagingX.otherdomain.com. 这是我无法控制的。

我遇到的问题是当我尝试从apps.domain.com以下位置登录时遇到 CSRF 失败:

Failed to load resource: the server responded with a status of 403 (OK)
login error: "CSRF Failed: Referer checking failed - http://apps.domain.com/ does not match https://api.domain.com/."
Run Code Online (Sandbox Code Playgroud)

这一个简单的世界,我会简单地设置CSRF_COOKIE_DOMAIN*.domain.com和完成。但是,这完全破坏了我在部署之前暂存代码的能力,因为直接访问 APIstagingX.otherdomain.com也需要适用于需要运行的不同测试。

任何人都可以启发我我应该如何设置它?我正在后悔决定将应用程序部署到单独的服务器的那一天,但由于其他原因,应用程序部署和 API 部署应该分开......这让我发疯。

提前致谢。

-- 编辑以添加其他信息 --

对于它的价值,我也在使用 CORS 保护。在这种情况下,看起来我可能应该使用某种 CORS 标头而不是 CSRF,但我对 CORS 机制的了解不够充分,无法了解这是否是解决方案所在。我确实已apps.domain.com列入白名单,但这不适用于登录,也可能不适用于其他端点(无法通过登录来检查其他端点)。

django django-csrf csrf-protection

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

自动刷新所有表单的CSRF令牌

我注意到,当我打开我的应用程序并且没有做任何事情,比如2小时csrf令牌到期.由于会话仍然有效,我想知道是否有最好的实践自动刷新我的表单的所有csrf标记.

我找到了以下处理这些异常的问题https://gist.github.com/jrmadsen67/bd0f9ad0ef1ed6bb594e

但是,我想跳过那个重定向.

创建一个每小时左右调用后端的脚本来获取新令牌然后使用jquery刷新所有_token输入有什么问题吗?

setInterval(function(){ 
    // add ajax stuff here
    $('input[name=_token]').val(new_token);
}, 1800000);
Run Code Online (Sandbox Code Playgroud)

csrf csrf-protection laravel laravel-5

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

为什么 AntiForgeryToken 验证总是失败?

我正在开发一个API使用asp.net core2和运行的网络应用程序Angular。详细的开发环境配置在这里。我正在尝试配置AntiForgeryToken验证,但它一直失败。我按照配置。在这里,但我不得不修改它,因为我的 angular 应用程序和 asp.net 服务器在两个不同的端口上运行,因为前端启动不生成令牌。我通过在允许我生成令牌的应用程序组件中调用API路径 ( /api/Account/ContactInitialization) 来启动后端ngOnInit。配置如下图,

IServiceCollection 服务:

        services.AddAntiforgery(options =>
                {
                    options.HeaderName = "X-CSRF-TOKEN";
                    options.SuppressXFrameOptionsHeader = false;
                });
Run Code Online (Sandbox Code Playgroud)

并在IApplicationBuilder Configure

app.Use(next => context =>
                {
                    string path = context.Request.Path.Value;
                    if (

                        string.Equals(path, "/", StringComparison.OrdinalIgnoreCase) ||
                        string.Equals(path, "/api/Account/ContactInitialization", StringComparison.OrdinalIgnoreCase) ||
                        string.Equals(path, "/index.html", StringComparison.OrdinalIgnoreCase))
                    {
                        // We can send the request token as a JavaScript-readable cookie, 
                        // and Angular will …
Run Code Online (Sandbox Code Playgroud)

c# antiforgerytoken csrf-protection asp.net-core-2.0

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

CRSF LazyCsrfTokenRepository 如何工作?

Java 8 - 弹簧 4.3.x

在配置 spring 安全性和启用 csrf 功能时,我遇到了两种实现,CsrfTokenRepository一种是 Lazy,另一种是基于 Cokkie

我知道CookieCsrfTokenRepository可以使用将 csrf 令牌写入 cookie 并在标头中接受 cookie 值来验证有效请求

有人可以帮助我了解它是如何LazyCsrfTokenRepository工作的吗?

spring csrf spring-security csrf-protection

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

如何在express3中启用csrf?

我一般都是表达和节点的新手.我想知道如何启用csrf保护?问题是,对于不同的版本有很多不同的教程,它完全不是向后兼容的.

我尝试了几种方法,它们似乎不起作用,这就是我现在所拥有的.问题是在我的表单中,csrf值为空.

app.js

var express = require('express');
var http = require('http');
var path = require('path');
var validator = require('express-validator');
var app = express();

app.configure(function() {
    app.set('port', 3001);
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'jade');
    app.use(express.favicon());
    app.use(express.logger('dev'));
    app.use(express.json());
    app.use(express.urlencoded());
    app.use(express.methodOverride());
    app.use(express.cookieParser('secret'));
    app.use(express.bodyParser());
    app.use(validator());
    app.use(express.session());
    app.use(express.csrf()); // Okey, I've used this middleware
    app.use(app.router);
    app.use(express.static(path.join(__dirname, 'public')));
    app.use(express.errorHandler());
});

app.get('/', function(req, res) {
    res.render('admin/login');
});

http.createServer(app).listen(app.get('port'), function() {
    console.log('Express server listening on port ' + app.get('port'));
});
Run Code Online (Sandbox Code Playgroud)

管理员/ login.jade

doctype 5
html
    head
        title= title …
Run Code Online (Sandbox Code Playgroud)

node.js csrf-protection express

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

Chrome扩展程序和CSRF无敌

假设我们有一个在表单中使用CSRF令牌的站点.

现在我们有一个浏览器/ chrome扩展(css,js,html),它使用隐藏在输入中的CSRF来执行发布请求并更改应用程序的状态.

如何防止这种攻击呢?或者我错过了什么?

csrf firefox-addon google-chrome-extension safari-extension csrf-protection

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

CSRF是否安全?

很多人谈论实施CSRF以阻止网页上的跨站点攻击.但我认为破坏CSRF并向服务器发出请求非常容易.

它是如何工作的?

  1. 您从一个页面开始,渲染一个表单并使用CSRF令牌保留一个隐藏字段.
  2. 提交表单时,其他页面将使用CSRF令牌以验证请求.
  3. 验证请求时,服务器将检查带有密码的CSRF令牌以查看令牌是否有效.
  4. 现在秘密本身存储在会话或cookie中.

这意味着如果我去网站,从网页复制CSRF令牌,从浏览器网络选项卡复制会话值.在此之后我可以构造一个CURL请求,设置这些值并尽可能多地发出请求.

那么CSRF的需求是什么?

csrf csrf-protection

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

Vert.x检查请求标头是否包含X-Requested-With,如果不包含则拒绝

在vert.x中,如果标头中不存在“ X-Requested-With”标头,我想拒绝请求。我要这样做是为了保护CSRF?我找不到一个很好的文件。有人有主意吗?

java csrf csrf-protection vert.x

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