为什么Google会while(1);在其(私人)JSON响应前加上?
例如,这是在Google日历中打开和关闭日历时的响应:
while(1);[['u',[['smsSentFlag','false'],['hideInvitations','false'],
['remindOnRespondedEventsOnly','true'],
['hideInvitations_remindOnRespondedEventsOnly','false_true'],
['Calendar ID stripped for privacy','false'],['smsVerifiedFlag','true']]]]
Run Code Online (Sandbox Code Playgroud)
我认为这是为了防止人们eval()对它进行操作,但你真正需要做的就是更换while然后你就可以了.我认为eval预防是为了确保人们编写安全的JSON解析代码.
我已经在其他几个地方看到了这种情况,但谷歌(邮件,日历,通讯录等)的情况更是如此.奇怪的是,谷歌文档开始了&&&START&&&,谷歌联系人似乎开始while(1); &&&START&&&.
这里发生了什么?
好吧,伙计们,我正在编写一个Django应用程序,我只是想知道实际上csrf令牌是什么以及它如何保护数据.如果不使用csrf令牌,帖子数据是不安全的?
我知道如何使用csrf_token但我只需要一些信息它是如何工作的.
JQuery和其他框架添加以下标头:
X-Requested-With:XMLHttpRequest
为什么需要这个?为什么服务器要以不同于正常请求的方式处理AJAX请求?
更新:我刚刚使用这个标题找到了一个真实的例子:https://core.spreedly.com/manual/payment-methods/adding-with-js.如果在没有AJAX的情况下请求支付处理器,它会在完成后重定向回原始网站.当使用AJAX请求时,不会进行重定向.
下面是一个错误,由我的Rails应用程序中的表单引起:
Processing UsersController#update (for **ip** at 2010-07-29 10:52:27) [PUT]
Parameters: {"commit"=>"Update", "action"=>"update", "_method"=>"put", "authenticity_token"=>"ysiDvO5s7qhJQrnlSR2+f8jF1gxdB7T9I2ydxpRlSSk=", **more parameters**}
ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):
Run Code Online (Sandbox Code Playgroud)
对于每个非get请求都会发生这种情况,正如您所看到的那样authenticity_token.
我是一名PHP开发人员,通过阅读Michael Hartl的教程来学习Ruby on Rails .以下是本书的引用,指的是csrf_meta_tag:
... Rails方法
csrf_meta_tag[防止]跨站点请求伪造(CSRF),一种恶意Web攻击.不要担心细节(我没有); 只知道Rails正在努力保证您的应用程序的安全.
问题是,我真的很好奇.插入csrf-param和csrf-token元标记如何阻止CSRF?我试过谷歌搜索,但找不到任何东西.
我已经读到了Same Origin Policy,但是为了更好地理解这个问题:有人可以写一个简单的代码(用任何语言)来演示SOP停止的攻击吗?
在SOP出现之前怎么可能攻击某人?
我正在开发一个完全由ajax驱动的应用程序,其中所有请求都通过基本上相当于一个主控制器,在它的骨头上看起来像这样:
if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
fetch($page);
}
Run Code Online (Sandbox Code Playgroud)
这通常足以防止跨站点请求伪造吗?
当每个请求没有刷新整个页面时,拥有一个旋转令牌是相当不方便的.
我想我可以传递和更新唯一令牌作为一个全局javascript变量与每个请求 - 但不知何故感觉笨拙,似乎本质上不安全.
编辑 - 也许静态令牌,如用户的UUID,会比什么都好?
编辑#2 - 正如鲁克所指出的,这可能是一个令人头疼的问题.我已经阅读了两种方式的猜测,并听到有关旧版本的闪存可用于此类恶作剧的远程窃窃私语.由于我对此一无所知,所以我会向任何可以解释这是CSRF风险的人提供奖励.否则,我将它交给Artefacto.谢谢.
我有一个关于Rails如何处理cookie加密/解密的问题.
我在config/environment.rb中有这个
config.action_controller.session = {
:session_key => [some key],
:secret => [some secret]
}
Run Code Online (Sandbox Code Playgroud)
这在config/environment/production.rb等人:
ActionController::Base.session_options[:session_domain] = [some
domain]
Run Code Online (Sandbox Code Playgroud)
到目前为止,这么好 - 只要我的所有Rails应用程序具有相同的session_key和秘密,并且在同一个域中,它们都可以使用相同的cookie.
但是,一位同事现在有一个JSP应用程序(在同一个域上),他想用它来阅读我设置的cookie.
因此,给定一个秘密和加密的cookie值,我们如何解密它以获取该cookie的内容?
(文档似乎表明这是默认的单向SHA1加密 - http://caboo.se/doc/classes/CGI/Session/CookieStore.html - 但那么我的Rails应用程序将如何读取内容单向加密的cookie?)
提前感谢任何提示/指示/见解,
乔
我一直致力于一个安全的登录/门户类型工具集,一般代码没有SQL注入,XSS等,我有很多东西来阻止会话劫持.
等等
我已经做了所有我能想到的停止劫持的事情,但是我仍然找到了可能的情况,并且想知道是否有人有任何想法.
想象一下,在防火墙后面有2个用户执行SNAT/DNAT的情况,因此两者都来自同一个IP.它们都是由同一地方提供的相同机器.一个连接到站点并登录,另一个复制PHPSESSID cookie并且可以简单地窃取会话.
这可能听起来像一个极端的例子,但这与我的工作地点非常相似,每个人都在防火墙后面,所以看起来是相同的IP,所有机器都由IT团队管理/提供,所以所有都有相同的版本浏览器,操作系统等
我试图想到另一种方式(服务器端)停止劫持或进一步最小化它,我想到一个令牌嵌入到每个URL(为每个页面更改),并检查.
我正在寻找想法或建议,如果你想提供你喜欢的代码或例子,但我对我的令牌想法的开箱即用的想法或评论更感兴趣.
我想通过JSON进行新的用户注册,但是我收到了无效的真实性令牌错误.
我想不要为所有控制器打开伪造检查.有关如何覆盖registrationcontroller的任何建议吗?
这是我的代码:
class Api::MobileRegistrationsController < Devise::RegistrationsController
skip_before_filter :verify_authenticity_token
respond_to :json
def create
super
end
end
Run Code Online (Sandbox Code Playgroud)
路线:
Whitney::Application.routes.draw do
resources :apps
devise_for :users
namespace :api do
resources :tokens, :only => [:create, :destroy]
resources :MobileRegistrations, :only => [:create]
end
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
Routing Error
uninitialized constant Api::MobileRegistrationsController
Run Code Online (Sandbox Code Playgroud)