ruby-on-rails - 尝试运行即将到来的数据库并由用户从前端保存的“ruby 代码”。(Ruby on Rails)
问题描述
目前我正在构建应用程序,用户可以从客户端运行 ruby 代码模块。保存代码时,它会保存在数据库中,但是当我获取代码以显示文件时,代码只是打印它没有运行的字符串。
**<%=raw @post.frontend %>**
此行仅运行 css 和 html 之类的前端,但不运行 ruby 代码
例子:
**@post.frontend =
"<% @fake_post.map do |simple| %>
<h1> <%= simple.description %> </h1>
<% end %>"**
输出:
**<% @fake_post.map do |simple| %>
<%= simple.description %>
<%= simple.description %>
<% end %>**
当我打印 <%= puts @post.frontend %> 之类的值时,它会抛出未定义的模板错误。
让我知道我是否遗漏了什么
解决方案
ERB
当您想要将 ERB 评估为文本时,您需要运行您的模板。
<%= ERB.new(@post.frontend).result_with_hash(fake_post: @fake_post) %>
您需要在模板中替换为才能使用@fake_post
。fake_post
注意:允许用户编辑 ERB 意味着您需要信任您的用户。ERB 允许运行任何 Ruby 代码。用户可以添加代码来公开他们的数据库凭据或更改数据库中的数据或删除重要的东西。
推荐阅读
- swift - 如何设置自定义字体
- python - python中的深度学习和学习自动机
- python - 使用 Python 创建具有级联功能的搜索栏
- r - 如何在特定行启动函数
- spring - 自动生成的图片没有被服务器发现,也没有显示在网页上
- sql-server - SQL Express 2017 Service Broker,未从队列中激活存储过程
- java - 使用 Packr 将 LibGDX 程序打包为 exe 会破坏打开 URL 流的代码
- multithreading - 线程和使用webclient中的for循环问题
- flask - Jinja2 格式不适用于 Raspberry Pi
- firebase - 在 Dart 中遍历 Map of Maps 的 Map