javascript - 将用户创建的 javascript 保存在数据库中是否安全?

标签 javascript mysql ruby-on-rails

我正在开发一种代码 Playground 类型的应用程序,用户(网络开发人员/设计人员)可以在其中输入 HTML、CSS 和 Javascript 并在 iframe 上查看结果。输入的代码将保存在数据库 (MySQL) 中,并在 show_results View /操作的 iframe 中再次呈现。

现在的问题是:将 javascript 直接保存在数据库中是否安全?如果没有,那么我应该在哪里/如何保存它?

最佳答案

数据库不会成为您的问题。使用准备好的语句允许将各种字符安全地存储在数据库中是相当简单的。使用准备好的语句以外的任何东西来存储用户输入是不够的,并且基本上不推荐。

但是你说的是允许执行任意 javascript,这总是一个安全问题。正如上面的评论者所暗示的那样,您将在没有安全经验、开发知识或明确希望继续修补将不断出现的漏洞的情况下复制 jsfiddle.net 的复杂性。

当然你应该意识到你正在做的事情会完全破坏你设置它的任何域,所以基本上 javascript 应该只写在你不使用的一次性域或子域上任何其他目的。当然,在这样的环境中,简单地破坏帧并将查看者也从托管该帧的网站上拉下来将是微不足道的。

我敢肯定,这只是触及了任意 javascript 执行(也就是故意的 self 跨站点脚本)将带来的潜在滥用的皮毛。

既然您实际上是在用这个概念重新发明一个非常危险的轮子,为什么不简单地使用一些已经存在的嵌入服务呢?例如,codepen.io 允许您嵌入它的片段。

关于javascript - 将用户创建的 javascript 保存在数据库中是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25940061/

相关文章:

ruby-on-rails - Rails - 3 列关联表?

ruby-on-rails - Nginx 和 Rails gzip 配置

mysql - where 子句中的复杂 sql 查询

mysql - SQL : Need to return results when the element in a column repeats only two or more years

php - SQLSTATE[HY000] [2002] php_network_getaddresses

javascript - 使用 JavaScript 填充 div 中的内容

ruby-on-rails - 由于 Bundler::GemspecError: 无法读取 gem 导致 bundle 安装失败

javascript - 分区集使得笛卡尔积服从约束

php - 使用 Ajax 检查按钮是否被点击

javascript - 带 Angular 模拟的 Protractor 抛出 "Window Not Defined"