“清理”用户提交的 Javascript - 所以它仍然有效!

2024-01-04

我计划在我的网站中设置一个功能,用户可以提交 HTML、CSS 和 JS,然后将其“实时”生成为完整的 HTML 工作页面。其他用户将能够看到这一点。这些页面需要有有效的 Javascript。

我知道这本身就是一个相当大的安全缺陷,但该功能在网站上非常重要。我有这些想法:

  • 无法链接到外部 Javascript 文件
  • 可以包含 jQuery 等,但只能来自受信任的 CDN(例如 Google)
  • 某些 Javascript 功能将被禁用和删除(例如eval())
  • 用户在获得一定的“声誉”之前无法提交实时演示代码
  • 用户提交的实时演示代码必须经过管理员授权才能上线
  • 不得使用缩小代码

以及被动安全措施:

  • 免责声明,所以我们不承担任何责任! ;)
  • “报告”按钮以防用户发现可疑情况

所以这是问题:作为一项安全计划,您对此有何看法?这些措施结合起来足以阻止攻击者吗?用户将在三个单独的输入中提交代码 - CSS、HTML 和 JS - 因此我将能够相应地进行过滤和清理,然后“实时”重组它以供其他人预览。

Thanks!

Jack


听起来像是一个计划,尽管我认为执行起来会很困难。

  • JavaScript 是一种非常灵活的语言,它可能不可能过滤掉所有的eval()-like 自动构建。

  • 还有很多方法可以从外部域获取脚本文件,但很难说清楚。

  • 可能有大量代码需要人工审查。

专注于该想法的声誉方面(仅接受来自受信任用户的可执行代码),并在与您登录的域分开的无 cookie“沙箱”域上运行所有内容,这无疑是一个好主意。

风险总会存在,但我不认为这种风险比互联网上任何其他提供 JavaScript 的网站更大。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“清理”用户提交的 Javascript - 所以它仍然有效! 的相关文章

  • Android 设备上的 PhoneGap 蓝牙插件

    我一直在尝试让 PhoneGap 工作的蓝牙插件 但我似乎不知道哪里出了问题 首先 我的测试设备是 Galaxy S3 GT 19305T 应用程序是使用PhoneGap CLI http docs phonegap com en 3 0
  • 为什么 JavaScript base-36 转换看起来不明确

    我目前正在编写一段使用 Base 36 编码的 JavaScript 我遇到了这个问题 parseInt welcomeback 36 toString 36 看来要回归了 welcomebacg 我在 Chrome 开发者控制台和 Nod
  • TypeError: props.render 不是一个函数(React hook 形式)

    我将方法作为我用react hook form制作的形式的道具传递 当从react hook form添加控制器时 它给了我 TypeError props render不是一个函数 我在网上找不到任何解决方案 因此感谢任何帮助 impor
  • 如何重定向到 instagram://user?username={username}

    我的 html 页面上有这个链接 可以在特定用户上打开 Instagram 应用程序 a href Link to Instagram Profile a 我一直在寻找自动运行 url instagram user username USE
  • 使用模数按字母顺序对列表进行排序

    我在获取元素列表并按字母顺序对它们进行排序方面没有任何问题 但我很难理解如何使用模数来做到这一点 更新 这是按我的方式工作的代码 但是 我更喜欢下面提供的答案的可重用性 因此接受了该答案
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • 除了更改标题之外,如何在 Firefox 中强制另存为对话框?

    有没有办法在 ff 中强制打开 www example com example pdf 的另存为对话框 我无法更改标题 如果您可以将文件以 Base64 格式输出到客户端 则可以使用 data uri 进行下载 location href
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • 音频 blob 的 URL.createObjectURL 在 Firefox 中给出 TypeError

    我正在尝试从创建的音频 blob 创建对象 URLgetUserMedia 该代码在 Chrome 中可以运行 但在 Firefox 中存在问题 错误 当我打电话时stopAudioRecorder 它停在audio player src
  • Jquery/Javascript 上传和下载文件,无需后端

    是否可以在没有后端服务器的情况下在 JavaScript 函数中下载和上传文件 我需要导出和导入由 JavaScript 函数生成的 XML 我想创建按钮 保存 xml 来保存文件 但我不知道是否可行 另一方面 我希望将 XML 文件直接上
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • Mac 应用程序商店 - 尝试让加密发挥作用。 。 。我缺少什么?

    我正在尝试使用 Alan Quartermain 的解决方案 如该问题所链接 Mac App Store 收据验证码 https stackoverflow com questions 4261348 mac app store recei
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • FireFox 中的自动滚动

    我的应用程序是实时聊天 我有一个 Div 来包装消息 每条消息都是一个 div 所以 在几条消息之后 我的 DOM 看起来像这样 div div Message number two div div div div
  • 条件在反应本机生产中失败,但在开发中有效

    我创建了一个反应本机应用程序 我需要通过它进行比较 如果属实 就会执行死刑 问题是 该条件适用于 React Native 开发模式 而不适用于 React Native 生产版本 我使用 firebase 作为数据库 也使用 redux
  • Javascript 纪元时间(以天为单位)

    我需要以天为单位的纪元时间 迄今为止 我已经看到过有关如何翻译它的帖子 但几天后就没有了 我对纪元时间很不好 我怎么能得到这个 我需要以天为单位的纪元时间 我将解释为您想要自纪元以来的天数 纪元本身是第 0 天 或第 1 天的开始 无论您如
  • 如何更改此 jquery 插件的时区/时间戳?

    我正在使用这个名为 timeago 的插件 在这里找到 timeago yarp com 它工作得很好 只是它在似乎不同的时区运行 我住在美国东部 费城时区 当我将准确的 EST 时间放入 timeago 插件时 比如 2011 05 28
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 为什么 jquery 没有检测到单选按钮未被选中的情况? [复制]

    这个问题在这里已经有答案了 可能的重复 JQuery radioButton change 在取消选择期间不会触发 https stackoverflow com questions 5176803 jquery radiobutton c
  • 如何从图像输入中获取 xy 坐标?

    我有一个输入设置为图像类型

随机推荐

  • R - 缓慢地工作 lapply 对有序因子进行排序

    根据问题创建语料库和 DTM 的更有效方法 https stackoverflow com questions 25330753 more efficient means of creating a corpus and dtm 25333
  • 如何在 JavaScript 中检测 Mac OS X 版本

    我在互联网上到处搜索如何检测操作系统及其版本 我已经找到了如何在 Windows 上执行此操作 请参阅下面的代码 现在我希望它也适用于 Mac Windows 检测代码 完美运行 OS detection var os function v
  • 使用 agrep() 进行多个模式的模糊名称匹配的更快 R 代码...?

    我是一个 R 新手 一直在尝试使用agrep我有一个庞大的客户数据库 150 万行 我确信其中有很多重复项 但许多重复项并未使用 table 来获取重复的确切名称的频率 只要观察一些行 我就注意到许多重复项是 唯一的 因为名称的拼写中有一个
  • JSON 反序列化:如何从 JSON 对象数组中获取值

    我已在 C 中成功反序列化此 JSON 字符串 但无法从数组中嵌套的对象中提取值 JavaScriptSerializer js new JavaScriptSerializer string json key 1234 status ok
  • C++ 构造函数调用和对象创建

    class Test public int x Test x 0 cout lt lt constructor with no arguments called lt
  • 他们是如何制作那些精美的启动屏幕的?

    虽然我目前在应用商店中只有一款应用程序 但我有几个正在开发中 并且想知道用户是如何制作他们的启动屏幕的 我看过几个非常酷的动画 想知道这是否都是通过代码完成的 或者只是你在 iMovie 中制作的东西 然后将其作为视频运行 知道其中一些是如
  • 如何访问从 webpack 外部捆绑包/块捆绑的模块

    首先我要说的是 我已经尝试寻找这个问题的答案 但没有找到任何有效的方法 甚至没有找到任何可能的暗示 我最近从 RequireJS 配置转向使用 Webpack 进行汇总 在 Groovy 应用程序的某些地方 我们在 GSP 中有一个脚本标记
  • Quartz Spring CronTrigger 触发次数超过配置次数

    我有一个用于 digestJob 作业的 cronTrigger
  • 使用 TermDocumentMatrix 进行 UTF-8 字符编码

    我正在努力学习R 我已经尝试解决这个问题几个小时了 我已经搜索并尝试了很多方法来解决这个问题 但到目前为止还没有运气 那么我们开始吧 我正在从 Twitter 通过 twitteR 下载一些随机推文 当我检查数据框时 我可以看到所有特殊字符
  • REST 在分布式 Web 应用程序中的用途是什么

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在学习 REST API 但无法理解如何在分布式 Web 应用程序中使用 REST 这是唯一的参考 http www slides
  • 如何选择特定类的最后一个元素[重复]

    这个问题在这里已经有答案了 我想知道为什么 foo 正在记录一个值 而 bar 却没有 它们在语法上似乎也相同 编辑 这是一个 X Y 问题 我的目标是获得班级的最后一个元素foo我尝试使用这个last child 我试过last of t
  • 未提供有效的身份验证

    我被困在这个步骤2 4wiki https dev loganalytics io documentation 1 tutorials direct api 在上一步中 我获得了一个有效的令牌 为什么我收到 未提供有效的身份验证 我添加了一
  • 查找仅限于多个范围的重复项 - pandas

    假设我们的问题可以这样简化 df pd DataFrame df C rows C1 C2 C3 C2 C1 C2 C3 C1 C2 C3 C4 C1 df values customer1 4321 1266 5671 customer2
  • 找不到 MSBuild.exe、cmd.exe

    我最近安装了 Visual Studio 2017 MSBuild exe 不应该附带吗 bash 脚本之一正在调用它 但找不到任何内容 这是 build bat 中产生错误的部分 您可以看到整个文件here https github co
  • OpenCV Docker 多阶段构建 - 无法安装预构建源

    我正在尝试构建一个 Docker 映像 其中包括具有 CUDA 和 GPU 支持的非常特殊的 OpenCV 配置 构建成功 如果我make install它来自构建图像的相同上下文 它可以正常工作 当我尝试使用多阶段构建以避免保留构建 Op
  • Spacy Entity Linking 模型的训练时间

    我正在尝试使用 Wikidata 和 Wikipedia 中的脚本来训练 Spacy Entity Linking 模型https github com explosion spaCy tree master bin wiki entity
  • C# 匿名类型在 C# 7 中是否多余

    由于 C 7 引入了值元组 是否存在比元组更适合的有意义的场景 例如 以下行 collection Select x i gt x i Where y gt arr y i f y x ToArray 制作以下行 collection Se
  • 当用户返回后台应用程序时如何触发功能?

    例如 用户打开应用程序 按主页按钮 然后再次返回该应用程序 当用户导航回应用程序时 有什么方法可以触发某些功能吗 例如 当用户返回应用程序时自动加载视图对象 这个问题适用于 Android 和 iOS 在项目中根据您的喜好使用以下内容App
  • ggpattern na 值后缺少模式

    使用 ggpattern 如何不显示 NA 值的模式 但在该点之后继续模式 当我运行此代码时 NA 值之后没有更多模式 尽管应该有 library swimplot library ggpattern library tidyverse d
  • “清理”用户提交的 Javascript - 所以它仍然有效!

    我计划在我的网站中设置一个功能 用户可以提交 HTML CSS 和 JS 然后将其 实时 生成为完整的 HTML 工作页面 其他用户将能够看到这一点 这些页面需要有有效的 Javascript 我知道这本身就是一个相当大的安全缺陷 但该功能