问题标签 [google-caja]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2107 浏览

javascript - 谷歌caja如何使用

假设我有一个页面,并且我想允许第 3 方将小型应用程序/iframe 嵌入到我的页面中。为了在我的页面上使用 caja 来保护第 3 方小应用程序/iframe。我是否需要添加任何额外的 javascript/服务器端代码才能使用 caja?第三方小型应用程序的获取是通过代理还是直接 iframe 完成?

0 投票
4 回答
21748 浏览

java - 无法运行 java 程序!NoClassDefFoundError?

我是一名 .NET 开发人员,但对于我当前的项目,我需要使用 Java 项目 Google Caja。哦哦!

我在我的 Windows 机器上遵循了http://code.google.com/p/google-caja/wiki/RunningCaja上的指南,但无法让程序运行。他们建议的命令行不起作用,所以我进入 ant-jars 目录并尝试运行 plugin.jar:

那是怎么回事?

我也试过 file:///d:/java/caja/svn-changes/pristine/ant-jars/test.htm 而不是 test.htm。查看源代码,文件参数似乎是一个 Uri ...

我也尝试过在 pluginc 上运行 IKVM,然后不用担心 java,但这也出现了 ClassDefNotFoundException ......

谢谢!

编辑:感谢大家到目前为止的帮助:) 仍然卡住了。请和我一起坚持,这可能是 .net 开发人员转向漂亮的 OSS 技术的开始!

鉴于 build.xml 文件中的代码,有什么方法可以让它运行吗?

0 投票
1 回答
369 浏览

jquery - Caja 和 JQuery

假设我使用 cajoler 清理第三方 javascript 并在主机中运行它,关于 JQuery:

  • 第三方应用程序是否可以包含 JQuery,这将在过程中被哄骗,或者,
  • 主机站点是否向第三方公开 JQuery 功能?
0 投票
1 回答
802 浏览

javascript - 使用 caja 清理 Javascript?

我想允许我的应用程序的用户用 Javascript 编写插件来扩展其功能,而不允许访问我提供的插件 API 对象以外的任何东西。例如,插件可能如下所示:

Caja 看起来应该能够完成工作,但文档可能是我见过的任何开源项目中最糟糕的(相当成就!)。我需要一些帮助来设置系统。

我已经让 cajoler 在命令行上工作,并且我已经将一个这样的插件哄骗到某种有希望净化的 Javascript 中。被哄骗的 Javascript 看起来像是期望提供一个“IMPORTS___”对象,它应该包含插件可以访问的所有内容。到目前为止非常有希望!

不幸的是,让那个被哄骗的 Javascript 文件真正加载和运行变得一团糟。不幸的是,文档中的源代码片段完全错误,因为函数 loadCaja 实际上并没有出现在 google-caja 的当前主干中的任何地方。我找到了一些至少可以做某事的代码:

不幸的是,这样做是试图让哄骗者重新哄骗我已经哄骗的 javascript。我绝对对让服务器在每次请求时重新哄骗每个插件都不感兴趣;我只会在上传时哄骗它并将其存储起来以备使用。

我也找不到任何关于如何或在何处指定 IMPORTS___ 的文档(鉴于这是整个安全模型,这似乎是文档中的一个奇怪的疏忽)。那是传递给.run()的对象吗?

0 投票
2 回答
230 浏览

javascript - 以安全的方式执行第三方 javascript(从某些数据库提供)

我正在构建一个应用程序,其中用户生成的 javascript 函数存储在数据库中,并作为回报提供给许多其他用户。脚本必须由具有管理员权限的人验证(应该是可信任的 - 但它们是由用户自己选择的,因此似乎需要进行某种验证)

将要执行的函数主要用于计算目的 - 不需要访问 DOM 或(至少此时)任何全局对象。

假设用户定义了一个计算字符串单词的函数(作为一个简单的例子)。

我目前的方法是将函数包装在一个闭包中,传递一个带有输入属性的对象并在其中定义一个本地 var 窗口以使这个全局对象不可访问(显然这还不够 - 遍历窗口的所有属性对象并在本地定义它们可能是一种可能性,但作为回报可能会破坏一些重要的功能,这还不够)

下一个想法是将函数包装在 ADsave 调用中,以防止可能有害的功能(以及对全局范围的访问),但这需要通过 JSLint / adsave 选项即时验证代码(而且我只是找不到任何关于如何做到这一点的材料......!)

下一个方法是使用 Caja 之类的东西(实际上这将消除轻松添加新功能的可能性,因为 javascript 代码必须“转换”为代码的 Caja 版本(这不能由我自己的应用程序在-苍蝇)。

因为每当从服务器返回时(不仅仅是在客户端上创建它们时)我都必须验证这些函数,所以 ADsave 似乎是迄今为止最好的解决方案

有没有人有解决上述问题的方法(或者可能是更好的解决方案——我的意思是,以安全的方式执行第三方 jscript(从某些数据库提供)现在应该是一项相当普遍的任务。

0 投票
2 回答
880 浏览

security - 允许以#(哈希)开头的链接是否安全?

我正在构建一个 webapp,用户可以动态创建 HTML 内容。允许他们创建以 开头的链接是否安全(egwrt XSS 攻击)#

我不知道为什么不会——也许我只是偏执。#(对于URL ,我的 Javascript 代码没有做任何特别的事情。)

无论如何,我问的一个原因是我正在使用Google Caja 的 html-sanitizer来清理 HTML。它过滤 URL:s,默认过滤器如下所示:

即必须指定协议,并且只允许 HTTP 和 HTTPS,但不允许javascript:。我最近将 URL 过滤功能更改为:

(也就是说,#....也是允许的。)

我想也许我应该问你是否认为#...链接是安全的?

(例如,浏览器不会对 `href='#javascript:....' 之类的链接做任何疯狂的事情?好吧,它不会(反正不是我的浏览器),但也许还有其他一些东西。 ..我不知道)

0 投票
1 回答
89 浏览

javascript - 有关此 Caja(安全 JavaScript)代码的说明?

我正在研究 Caja,但在理解它的工作原理时遇到了一些麻烦:

这有一个标题,内容如下:

图 10:权利放大。每个品牌都有一个封印和解封​​功能,就像一个匹配的加密和解密密钥。密封一个对象会返回一个密封的盒子,这个盒子只能通过相应的开封功能来开封。这里展示的实现技术归功于 M. Stiegler。

这是伪代码吗?我对正在发生的事情感到困惑,例如 atbox()throw ...;。我感谢任何提示或建议。

这是我得到这个的规范PDF。

0 投票
1 回答
166 浏览

javascript - 如何运行示例 Caja(JavaScript 的安全子集)源代码?

Caja 是由 Google 开发的 JavaScript 的安全版本。我无法测试它,即为了展示它的演示?

0 投票
1 回答
341 浏览

javascript - 一个 JavaScript 漏洞——“this”——窃取:

我正在学习 Caja,但我对“this”-stealing 的概念感到困惑:

Caja 解决的另一个安全漏洞称为“this”窃取——如果对象的客户端可以向对象的状态添加别名“this”的方法,则上述受保护的“this”规则不适用。

然后他们显示以下构造函数:

有一个涉及 "x_" 的隐藏泄漏:

以下代码可以使表达式揭示该秘密值:

这是如何运作的?为什么会出现这样的问题?我感谢任何提示或建议。

0 投票
4 回答
1132 浏览

google-visualization - 我们可以将 Google 图表工具与 Google Script HtmlService 一起使用吗

我想使用 HtmlService 在 Google Scripts 中使用 Google Chart Tools。但我不知道 caja 是否允许注入脚本来显示图表。我的第一次测试给了我空白页。

有谁知道这是否至少是可能的?

我知道谷歌脚本提供“图表”服务,但与谷歌图表工具相比,这些功能是有限的。

谢谢,