例如,我正在为一家餐厅构建自己的 CMS,我有一个页面,网站所有者可以进入该页面并为通过后端管理的每餐编写他自己的描述。
我们还假设每顿饭都有与之关联的名称和价格。
我怎么能让所有者继续输入类似的内容:
<%= @food.name %> is made from the freshest ingredients and sells for <%= @food.price %>
我能不能稍微扩展一下并引入内容 block 的概念(类似于 Wordpress 中的短代码),它们也可以放入类似 <%= show_reviews %>
的内容中?也进入他们自己的内容?
如果是这样的话,我完全不知道如何处理用户生成的内容。
允许用户执行 ruby 代码可能非常危险。我会改为创建一组映射。例如:
[food.name]
将替换为 @food.name
[food.price]
会替换为 @food.price
我会明确使用 gsub
将所有出现的 [food.name]
替换为 @food.name
。总之,我认为实现您想要实现的目标的最安全方法是将您的用户将使用的替换模式列入白名单,并将它们全部gsub
。
我是一名优秀的程序员,十分优秀!