标签: csrf-protection

YII框架中CSRF令牌多久更改一次

我最近阅读了有关 csrf 令牌的信息。我正在使用 YII 框架来开发我的项目。我在 config/main.php 中启用了 csrf 验证,并且 yii 在隐藏的表单字段中放置了一个令牌。并检查令牌是否有效。一切安好。但是我观察到当我刷新并且页面中的所有表单都使用相同的令牌时,CSRF 令牌的值没有改变。

这让我很困惑。如果 csrf 令牌没有改变,那么任何黑客也可以在他的请求中使用该令牌,并且能够产生一个有效的请求。那么 csrf 令牌如何提供安全性?YII框架有问题吗?还是我错过了什么?我希望我确实错过了一些东西。如果我们必须手动生成令牌,请告诉我如何生成和验证(最好在 YII 框架中)

security csrf token yii csrf-protection

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

允许在正文或标头中发送 CSRF 令牌是否存在安全风险?

大多数 CSRF 解决方案似乎坚持将 CSRF 令牌作为 POST 数据的一部分发送。

在我的情况下,发送的数据是 json,我不控制发送的内容(而且我不想开始弄乱 json)。因此,我正在考虑将 CSRF 令牌作为标头发送。但是,我的应用程序的遗留部分仍然需要能够在正文中发送令牌(例如从 html 表单提交)。

因此,如果有效的 CSRF 令牌出现在正文或标头中,我的 CSRF 保护必须允许该请求。与坚持将令牌放在体内相比,这是否存在安全风险?

security csrf csrf-protection

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

Rails 无法仅在 Heroku/生产上验证 CSRF 令牌的真实性

该应用程序在开发和生产模式下都可以在本地正常工作,但是一旦部署在 Heroku 上,CSRF 验证就会失败。这是一个普通的非 ajax 请求。

在本地,我以生产模式运行

RAILS_ENV=production heroku local -e production
Run Code Online (Sandbox Code Playgroud)

我想确保这是真正的问题,所以我禁用了真实性令牌验证,Heroku 版本也能正常工作。

更新:这是我的配置:

# session_store.rb:
Hlresponse::Application.config.session_store :cookie_store, key: '_hlresponse_session', domain: :all

# Environment:

$ heroku config:set MIN_THREADS=1 MAX_THREADS=1

# Procfile:

web: bundle exec puma -C config/puma.rb

# config.ru:

require ::File.expand_path('../config/environment',  __FILE__)
run Rails.application

# puma.rb:

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['MAX_THREADS'] || 5)
threads threads_count, threads_count

preload_app!

rackup      DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'development'

on_worker_boot do
  # Worker specific setup for Rails 4.1+
  # …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails heroku csrf-protection puma

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

让 Rails Authenticity Token 与 iFrame 或 Facebook 一起使用

众所周知,Rails CSRF 真实性令牌无法在 iframe 或 Facebook 画布内工作。iframe 导致无法验证 Rails 中的 CSRF 令牌真实性

推荐的解决方案是将其关闭。然而,我已经让一些机器人自动提交我们的可嵌入表单。我希望拥有某种 CSRF 保护,而不必求助于验证码。

无论如何,有没有办法让 Rails 身份验证令牌在内部或 iframe 中工作,或者是否有更好的解决方案?谢谢

ruby-on-rails csrf csrf-protection facebook-canvas ruby-on-rails-4

5
推荐指数
0
解决办法
565
查看次数

基于令牌的身份验证中的 CSRF

我们的 angularjs 应用程序有一个基于令牌的 OAuth 身份验证机制。acunetix 工具表明存在 XSRF 威胁。

CSRF 是否是基于令牌的身份验证的问题(因为我们没有使用任何 cookie 进行用户识别/身份验证/会话)?

如果 CSRF 是基于令牌的身份验证的问题,是否有任何方法可以在不使用 cookie 的情况下实施预防?

oauth csrf antiforgerytoken csrf-protection angularjs

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

如何防止我的网络应用程序在java中遭受CSRF(跨站请求伪造)

我试图阻止我的 Web 应用程序遭受 CSRF(跨站点请求伪造)我点击了此链接Link for CSRF

这是我尝试过的。为了在 Java 中实现这一机制,我选择使用两个过滤器,一个为每个请求创建盐,另一个用于验证它。由于用户请求和后续应验证的 POST 或 GET 不一定按顺序执行,因此我决定使用基于时间的缓存来存储有效盐字符串的列表。

第一个过滤器用于为请求生成新的盐并将其存储在缓存中,代码如下:

public class LoadSalt implements Filter{


    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {

        // Assume its HTTP  
        HttpServletRequest httpReq = (HttpServletRequest)request;
        // Check the user session for the salt cache, if none is present we create one
        @SuppressWarnings("unchecked")
        Cache<String, Boolean> csrfPreventionSaltCache = (Cache<String, Boolean>)
                httpReq.getSession().getAttribute("csrfPreventionSaltCache");

        System.out.println("Checking cahce befor creating it from Request :csrfPreventionSaltCache: "+csrfPreventionSaltCache);

        if(csrfPreventionSaltCache == null)
        {
            System.out.println("csrfPreventionSaltCache is null …
Run Code Online (Sandbox Code Playgroud)

java csrf-protection

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

如何防止跨站请求伪造攻击?

我们在我们的产品上运行Burp Suite并发现了一些安全漏洞。该工具检测到一些易受跨站请求伪造攻击 (CSRF) 攻击的 CGI 文件。

像往常一样,我在 CPAN 上搜索 CSRF 保护模块并找到了CGI::Application::Plugin::ProtectCSRF

我想知道如何以通用方式将此模块集成到我们的应用程序中?我不清楚文档。如何配置此模块并进行最小更改以确保整个应用程序免受 CSRF 的影响。

我还遇到了mod_csrf(一个防止 CSRF 的 Apache 模块)。在 apache 配置文件中安装此模块和设置是否足以防止 CSRF?

<VirtualHost>

    CSRF_Enable on
    CSRF_Action deny
    CSRF_EnableReferer off

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

apache perl csrf cgi-application csrf-protection

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

什么时候插入环防伪令牌?

我试图了解何时在 HTML 页面中生成或插入环防伪令牌。我正在使用 Compojure / ring / hiccup 但我认为我的问题真的是关于戒指。我本身没有任何问题:我只是想知道何时以及如何“注入”防伪令牌。

anti-forgery-field从功能ring.util.anti-forgery实现是这样的:

(html (hidden-field "__anti-forgery-token" *anti-forgery-token*)
Run Code Online (Sandbox Code Playgroud)

如果我在 REPL 中调用这个函数,我会得到:

REPL>  (println (anti-forgery-field))
<input id="__anti-forgery-token" name="__anti-forgery-token" type="hidden" value="Unbound: #&apos;ring.middleware.anti-forgery/*anti-forgery-token*" />
Run Code Online (Sandbox Code Playgroud)

仍然在 REPL 中,如果我尝试获取此变量,则会得到相同的“未绑定”变量:

> ring.middleware.anti-forgery/*anti-forgery-token*
=> #object[clojure.lang.Var$Unbound 0x1eae055 "Unbound: #'ring.middleware.anti-forgery/*anti-forgery-token*"]
Run Code Online (Sandbox Code Playgroud)

我不明白的是“未绑定”值是什么,也不知道它何时(通过环?)转换为实际交付的令牌。而且我特别不明白连接到网站的几个用户如何获得不同的令牌(每个会话)。

该变量总是“未绑定”吗?它何时/如何成为“绑定”(如果有?)?

另外,如果我有环会话 ID(比如"ring-session=310678be-9ef6-41a7-a12a-b2417de4a79f"),我怎么能在 Clojure REPL(在服务器端)看到相应的反伪造令牌的价值?

clojure ring csrf-protection

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

如何保护Web应用程序免受cookie窃取攻击?

我的网络应用程序的身份验证机制目前非常简单。

当用户登录时,网站会发回一个会话 cookie,该 cookie 存储(使用localStorage)在用户的浏览器上。

但是,此 cookie 很容易被窃取并用于从另一台计算机重播会话。我注意到其他网站(例如 Gmail)拥有更强大的机制来确保仅复制 cookie 不会允许您访问该会话。

这些机制是什么?小公司或单个开发人员是否也可以使用它们?

cookies session-cookies local-storage csrf-protection angular-cookies

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

Laravel 5.7 Auth :: loginUsingId()在生成CSRF令牌后无法正常工作

我正在尝试在注册步骤的第2步自动登录用户.成功插入db后,我正在Auth::loginUsingId($user_id)使用ajax自动登录用户.我总是CSRF在每个步骤上提交令牌.

现在问题是在成功登录CSRF令牌生成后,Auth::user()在步骤3中变为空白

登录前后CSRF也不同.

csrf-protection laravel laravel-5 laravel-5.7

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