问题标签 [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.
jquery - 如何使用 htmlService 定位 jQuery 对话框
jQuery 位置使用 caja 不支持的“Fixed”,因此 nice simpleposition: {my: "top", at: "top", of: $("#here")}
不适用于 htmlService。所以要移动我的小部件,我必须使用 css 并将位置更改为绝对位置。
有什么方法可以达到与 position: {my: "top", at: "top", of: $("#here")}
使用 htmlService 相同的效果吗?
或者我可以使用 jQuery 对话框的替代方法吗?当有人在不离开侧边栏的情况下单击按钮时,我想打开一个简单的提示。
google-apps-script - 无法在谷歌应用脚本中提供下载链接
更新:我找到了解决方案。这并不一定能解决所有情况,所以我将把这个问题留一小段时间,以防有人能启发我更多。我通过更改 url 的格式解决了这个问题:Google Drive 允许使用这种格式下载文件:
https://docs.google.com/uc?export=download&id=FILE_ID
所以我不知道这是否是其他 URL 的问题;实际上也不确切为什么 .getDownloadUrl() 不起作用......也许有人可以解释。但是现在这似乎在我可以测试的浏览器中工作......
我有一个简单的 WebApp 脚本,我通过添加 Apps Script 小工具在 Google 站点上运行它。该小工具的运行方式与以下表单示例完全相同:
https://developers.google.com/apps-script/guides/html/communication#forms
该小工具旨在执行以下操作:加载页面时,会返回一个表单,用户必须输入许可证密钥才能获得下载产品的链接。我的代码提供表单 OK,并获得表单提交 OK;然后它验证密钥,如果有效,则发回一个下载链接。一切正常;问题是,无论我尝试返回什么下载链接,caja iframe 包装器都会阻止点击链接实际下载文件。
我首选的返回 URL 实际上是通过 Drive API:下载文件在 Google Drive 上,我得到的下载链接如下:
DriveApp.getFileById(downloadFileId).getDownloadUrl()
但是,当在为 WebApp 小工具生成的 caja iframe 中单击返回的链接时,什么也没有发生。我已经尝试了一些其他 URL 格式指向驱动器上的该文件,但没有任何下载工作。
这可能吗?
javascript - 如何放松 Google Caja HTML Sanitizer?消毒太多了
我正在使用 Google Caja HTML Sanitizer ( https://code.google.com/p/google-caja/wiki/JsHtmlSanitizer ),但是它正在对我不想要的东西进行消毒。
有时我想以类似于以下格式输入数据:
但这变成:
java - 如何在 Java 中使用 Google Caja HTML/CSS sanitizer JS 库
我有一个接受自定义 CSS 字段的 Java API。我需要在将 CSS 存储到我的数据库之前对其进行清理,并希望为此使用Google Caja。
首先,我尝试使用Rhino JavaScript 引擎运行Google Caja HTML/CSS sanitizer JavaScript 库。不幸的是,这不起作用,因为该库在很大程度上依赖于 DOM(特别是对象)的存在。window
接下来,我从Maven 存储库中导入了 Caja 项目。我查看了一些测试,但找不到如何使用消毒剂的示例。
我可以尝试将浏览器带到服务器上,但这似乎有点过分。
有没有人能够使用 Caja 来清理 Java 中的 CSS 字符串?
提前致谢!
javascript - 在沙箱中加载 html、css、javascript 以防止任何通信
假设我希望执行一个禁止从外部源加载任何内容的 html/css/JS 页面。除此之外,一切都应该被允许。
一些例子
HTML
CSS
JavaScript
我首先希望'ssandbox
上的属性<iframe>
允许这样做,但事实证明不能这样做。接下来一直在研究 CSP,我认为它能够涵盖 CSS 和 AJAX 部分,但无法阻止信息通过例如 iframed 自动点击链接或location.href
. 那么,有没有其他方法可以让这一切一起工作?或者这可以通过 Google Caja 来实现(我宁愿不必自动重写所有内容,但如果没有其他选择,那么我也愿意接受)?
java - Java:解析 JavaScript 并标记错误
我一直运气不好试图让它工作,所以我希望有人能在这里提供帮助。
在 Java 中,我需要能够获取包含 JavaScript 的 HTML 页面,并在不执行 JavaScript 代码的情况下检测任何 JavaScript 错误,最好是不执行 JavaScript 代码。
我找到了这篇文章: Java 的 Javascript 解析器
而且我试图弄清楚我应该如何使用 Caja 来做到这一点,但我很难找到任何文档,其中包含与我正在做的事情接近的任何工作示例。
因此,我查看了那篇文章中也提到的 Nashorn。我发现了一些示例,它们展示了如何从 Java 执行 JavaScript 代码,但这并不能处理整个 HTML 页面。即使这样,执行似乎也不包括验证常见 JavaScript 函数的能力(例如,它没有听说过“警报”)。
任何人都可以推荐一些可以做我想做的事情,并为他们的文档指出正确的方向或给我一个例子吗?
javascript - 使用 Google Caja防止删除
为了安全起见,我在客户端使用 Google Caja 来清理 HTML。但是,不同元素的样式与我在消毒之前收到的样式不同。我需要保留标签中的内容,并且我正在尝试弄清楚如何。
例如,我收到以下 HTML:
并html_sanitize(bodyHtml, urlX, idX);
返回:
理想情况下,我想保持样式标签与其他所有内容相同。像这样。
我一直在尝试到处寻找解决方案,但我做不到。我还查看了文档,实施了自定义策略,但即便如此我也无法控制脚本标签被删除。
有没有办法用 Google Caja 做到这一点?
google-caja - 如何检查用户的浏览器是否支持 Google Caja?
我正在使用 Google Caja 来清理我网站上的用户输入。我目前正在传递给 caja.whenReady() 的回调中处理用户的输入。但是,在 Microsoft Edge 上,永远不会调用回调,因为 Caja 无法确保 Edge 安全。如果 Caja 不起作用,我想回退到处理用户的内容服务器端,在这里我将简单地去除所有 JavaScript。
如何检查 Caja 是否适用于用户的浏览器?
javascript - 防止代码读取 cookie(可能使用 google CAJA)
快速旁注: 这不是帖子的“可能重复”是否可以在浏览器中运行沙箱 JavaScript?,它与 cookie无关- 我需要询问有关 cookie 的问题。不过,我确实阅读了答案。
你好!我有一个网页,(注册用户)可以在其中创建自己的HTML页面并轻松访问和编辑它们。
每次用户执行操作时,为了证明执行操作的用户是执行操作的帐户的用户(换句话说,验证用户),登录令牌会随着操作发送到服务器必须完成。(快速说明:我存储的令牌不是用户的密码,它是一个随机生成的字符串,每次登录都会更改)。这有效,但有一个问题。
由于用户有能力创建自己的HTML页面,因此有人可以创建一个页面来读取用户的登录 cookie 并将其发送给某人。使用这种方法,有人可以进入其他人的帐户。
我听说过https://developers.google.com/caja/ - 这似乎非常有用。我阅读了CAJA页面,但没有关于防止 cookie 的内容。
理想情况下,我希望用户仍然能够存储和读取他们自己的 cookie,但不能存储和读取登录令牌。尽管那可能是不可能的。
因此,完全阻止用户创建的脚本读取或写入 cookie 是可行的。
但是有一个问题:我对CAJA完全陌生。有人可以解释如何使用CAJA或事实上阻止 cookie - 类似的东西吗?
先感谢您
javascript - 如何通过 Google CAJA 传递库?
有谁知道我是否可以配置 Google Caja,所以它可以让一些确切的库工作而不被清理?我有自己的 CAJA 服务器和基于 NodeJS 的应用程序。我正在向 Google CAJA 用户传递代码,该代码主要与图表和图形相关,但所有库函数(如 d3js、chart.js)都被 CAJA 阻止。所有库都通过 Caja 并无错误地连接到用户的文档,但如果用户请求库的任何功能(例如d3.select("body").append("svg")
),那么它会显示错误,例如this * is not a function
. 有谁知道任何方法?
PS 我知道 URI Policy,但它似乎只控制所有东西,即来自同源域名的东西,即使库通过 uriPolicy,它仍然由 Caja 检查。