我正在开发一个简单的网站,让管理员提出问题并让用户解决问题。我在管理部分使用ActiveAdmin,在用户解决部分使用简单的AJAX调用。起初尝试通过ActiveAdmin::Devise登录是成功的,但无法退出。我删除了所有cookie,从那时起我无法在没有CSRFtoken真实性异常的情况下进行POST操作。我的application.html.erb头部有正确的meta_tags,声明为jquery_ujs(其他线程说这是一个常见问题),并且在两个POST操作中都存在真实性token。我什至尝试通过skip_before_filter:verify_authenticity_to
在我的Rails应用程序中,我在发送到api的ajax帖子中收到“警告:无法验证CSRFtoken真实性”。app/views/layouts/application.html.haml:!!!%html%head=stylesheet_link_tag"application",:media=>"all"=javascript_include_tag"application"=csrf_meta_tags%body=yieldajaxpost:$.ajax({url:'#{card_credits_path}',type:'POST',beforeSend:function(xhr)
我正在使用Sinatra框架在ruby中构建一个简单的应用程序。它主要基于“获取”——大多数请求将用于列出数据。但是,应用程序中有几个关键屏幕将收集用户输入。我想确保该应用尽可能安全,目前,我正在尝试寻找如何实现您在Rails表单中获得的那种真实性token?我要去的地方:好吧,我知道我需要csrf的token,但我不确定我是否需要自己生成它们,或者Sinatra是否可以为我生成它们-我已经查看了文档,他们说Sinatra正在使用机架保护,但是,我找不到它的任何示例代码,而且似乎无法弄清楚如何让它继续-任何帮助表示赞赏-谢谢! 最佳答案
我明白了OmniAuth::Strategies::OAuth2::CallbackErrorat/auth/google/callbackcsrf_detected|CSRFdetected我的代码:require'sinatra'require"sinatra/json"require"sinatra/config_file"require'omniauth-oauth2'require'omniauth-google-oauth2'useRack::Loggerconfig_file"config/app_config.yml"useRack::Session::Cookie,s
当CSRFtoken不匹配时,Rails会引发一个InvalidAuthenticityToken。但是,通过阅读source,我无法弄清楚这实际上是如何发生的。我首先确认该类的树:$ack--ignore-dir=testInvalidAuthenticityTokenactionpack/lib/action_controller/metal/request_forgery_protection.rb4:classInvalidAuthenticityToken:unprocessable_entity只有两次点击,忽略评论。第一个是类定义:classInvalidAuthenti
我现在正在使用RubyonRails开发网络API。当Rails应用程序收到没有任何csrftoken的POST请求时,将出现以下错误消息。因为该应用没有View。WARNING:Can'tverifyCSRFtokenauthenticity所以我的问题是在这种情况下如何安全地逃避csrftoken检查?非常感谢您。 最佳答案 你可以通过添加skip_before_filter:verify_authenticity_token到你的Controller。这样,所有传入Controller的请求都会跳过:verify_authen
只是想从认识的人那里得到意见。我正在考虑CSRF漏洞,以及我所知道的似乎最流行的对抗它的方法。该方法是在返回的html中创建一个token,并添加一个具有相同值的cookie。因此,如果脚本尝试发帖,他们将必须猜测网页中嵌入的token才能成功。但如果他们针对特定网站,为什么他们不能只使用一个脚本在页面上调用get(即使脚本无法访问它也会返回cookie)解析html并获取token调用其中包含该token的帖子(返回的cookie将被发回)他们在用户不知情的情况下成功提交了表单脚本不需要知道cookie的内容,它只是利用cookie一直来回发送这一事实。我在这里错过了什么?这不可能吗
伪造的POST请求可以由不受信任的网站通过创建表单并将其发布到目标站点来构造。但是,此POST的原始内容将由浏览器编码为以下格式:param1=value1¶m2=value2不受信任的网站是否有可能构建包含任意原始内容(例如字符串化JSON)的伪造POST?{param1:value1,param2:value2}换句话说:网站能否使浏览器向第三方域发布任意内容? 最佳答案 HTML表单请求的POST正文总是application/x-www-form-urlencoded,multipart/form-data,或tex
我想对Stormpathpost中的JWTtoken和CSRF提出疑问解释了将JWT存储在localStorage或cookie中的优点和缺点。[...]ifyouarereadingvaluesoutofacookieusingJS,thatmeansyoucan'tsettheHttponlyflagonthecookie,sonowanyJSonyoursitecanreadit,thusmakingittheexactsamesecurity-levelasstoringsomethinginlocalStorage.I'mtryingtounderstandwhytheyre
我正在尝试为我的服务器端表单验证编写测试,但我不断收到禁止错误。看来这需要一个两步过程。第一步,从表单中获取CSRF值。第2步,使用CSRF值发布到表单处理程序。但是,无论我如何尝试发帖,我都会遇到禁止的错误。--完整测试:https://github.com/socketwiz/swblog/blob/master/test/contact.js#L57-L100我试过这样更改以下行:https://github.com/socketwiz/swblog/blob/master/test/contact.js#L85.send({name:'foo','X-CSRF-Token':t