Google会像这样返回json:
throw 1; <dont be evil> { foo: bar}
和Facebook的ajax具有这样的json:
for(;;); {"error":0,"errorSummary": ""}
出于安全考虑,对此:
如果刮板在另一个域上,则它们将不得不使用script
标签来获取数据,因为XHR无法跨域工作。即使没有,for(;;);
攻击者也将如何获取数据?它没有分配给变量,所以不会因为没有引用而被垃圾回收吗?
基本上要获得跨域数据,他们必须要做
<script src="http://target.com/json.js"></script>
但是,即使没有前置崩溃脚本,攻击者也无法使用任何Json数据,除非将其分配给可以全局访问的变量(在这些情况下不是)。崩溃代码实际上无能为力,因为即使没有崩溃代码,他们也必须使用服务器端脚本来使用其站点上的数据。
即使没有,for(;;);
攻击者也将如何获取数据?
攻击是基于改变行为的内置类型,特别是Object
和Array
,通过改变它们的构造函数或其prototype
。然后,当目标JSON使用{...}
或[...]
构造时,它们将成为攻击者自己的那些对象版本,并且具有潜在的意外行为。
例如,您可以将setter-property侵入Object
,这会出卖以对象常量编写的值:
Object.prototype.__defineSetter__('x', function(x) {
alert('Ha! I steal '+x);
});
然后,当将a <script>
指向使用该属性名称的JSON时:
{"x": "hello"}
该值"hello"
将被泄漏。
数组和html" target="_blank">对象文字导致setter的调用方式是有争议的。Firefox删除了3.5版中的行为,以响应对备受瞩目的网站的公开攻击。但是,在撰写本文时,Safari(4)和Chrome(5)仍然容易受到此攻击。
所有浏览器现在禁止的另一种攻击是重新定义构造函数:
Array= function() {
alert('I steal '+this);
};
[1, 2, 3]
目前,IE8的属性实现(基于ECMAScript第五版标准和Object.defineProperty
)目前在Object.prototype
或上不起作用Array.prototype
。
但是,除了保护过去的浏览器外,JavaScript的扩展可能会在将来引起更多类似的潜在泄漏,在这种情况下,谷壳应该也防止此类泄漏。
问题内容: Google返回json,如下所示: 和Facebook的ajax具有这样的json: 他们为什么放置将停止执行并生成无效json的代码? 如果它无效,他们将如何解析它;如果您尝试评估它,它将崩溃吗? 他们只是将其从字符串中删除(似乎很昂贵)吗? 这有什么安全优势吗? 出于安全考虑,对此: 如果刮板在另一个域上,则它们将不得不使用标签来获取数据,因为XHR无法跨域工作。即使没有,攻击者
我的一位同事最近在eclipse中创建了一个新项目,并使用内置的git客户端提交和推送。在我克隆到计算机并用eclipse打开后,我发现eclipse正在创建.classpath文件。CLASSPATH不是eclipse项目(也是.project)查找引用的JAR的关键文件吗?我在谷歌后非常困惑,看到所有的讨论都在谈论忽略他们。难道它们不是Eclipse正确工作的关键吗?为什么人们忽视了他们?如果
问题内容: 当引用类变量时,为什么人们要在它前面加上?我不是在谈论什么时候用于区分方法参数,而是在看起来没有必要的时候。 例: 在其中,为什么不仅仅引用为? 什么买什么? 这是一个其代码已在前面的stackoverflow问题。 问题答案: 某些人喜欢在私有数据成员之前添加“ m_”或名称接口“ IFoo”的原因相同。他们认为它提高了可读性和清晰度。您是否同意这样的约定是一个品味问题。
我在这里(有点)了解jdk 5 Reentry antLock的功能 但为什么我们想要一个“再进入者”锁呢?i、 e如果一个线程已经锁定了一个对象,为什么它需要再次获取它?
我得到以下例外: 执行INSERT INTO任务(task_title、task_description、task_priority、task_type、用户)时发生异常 (?, ?, ?, ?, ?)'带有参数["efSwedfgvswde","ewdfweds","正常",14,13]: SQLSTATE[23000]:完整性约束冲突: 1062重复条目'13'的关键'UNIQ_5058659
问题内容: 我无法使用RestTemplate(org.springframework.web.client.RestTemplate)应对额外的弹簧行为,但没有成功。 我在代码下面的Hole应用程序中使用,并且始终会收到XML响应,该响应会解析并评估其结果。 但是无法确定为什么执行后服务器响应为JSON格式: 我已经在较低级别的RestTemplate上进行了调试,内容类型为XML,但是不知道为