Rails标记(:br)不被视为html_safe

最后回答。

我目前正在重构我的应用程序,我想知道如何缩短我的“ if”,因为我经常在其中使用它们:

我想要的是<br />仅当值不为空时才换行,所以,现在我以这种方式编写它:

<% if @card.address.street.present? %>
 <%= @card.address.street.titleize %>
 <%= tag(:br) %> ## or plain html <br />
<% end %>

它运作良好,但我敢肯定,这种方法比较简单。

我试过了 :

<%= @card.address.street.titleize + tag(:br) if @card.address.street.present? %>

==>华盛顿路''## br标签不是html_safed。

如果我做 :

<%= raw @card.address.street.titleize + tag(:br) if @card.address.street.present? %>

等于:

<%== @card.address.street.titleize + tag(:br) if @card.address.street.present? %>

我工作良好,但是将代码暴露给XSS攻击。

因此,我尝试了:

<%= @card.address.street.titleize + raw(tag(:br)) if @card.address.street.present? %>

<%= @card.address.street.titleize + tag(:br).html_safe if @card.address.street.present? %>

<%= @card.address.street.titleize + "<br />".html_safe if @card.address.street.present? %>

==>华盛顿路''## br标签仍然不是html_safed。

对此进行消毒可得到很好的效果,像这样使用:

<%= sanitize(@card.address.street.titleize + tag(:br)) if @card.address.street.present? %>

但是,这是关于性能的最佳方式吗?

我最终使用了一个助手:

内部助手/ application_helper

def line_break value
 sanitize(value) + tag(:br)
end

帮助程序已加载到控制器内部

class UsersController < ApplicationController
helper ApplicationHelper

我在应用程序一中添加了此帮助程序。如果您希望应用程序的通用性较差,则首选模块。

与空参数一起使用的Sanitize将检查字符串中的html,并将其删除。如果您想要一些较轻的东西,则可以使用h()它来转义所有html而不是将其删除。

在视图中

<%= line_break(@card.address.street.titleize) if @card.address.street.present? %>

我知道这纯粹是“写入速度问题”,但是任何帮助都将不胜感激。

亲切的问候

张国荣

这不是因为您的br标签是安全的还是不安全的。

街道字符串是不安全的,并且当您将安全字符串添加到不安全字符串时,结果仍然是不安全的。

您可以改为这样写

<%= h(@card.address.street.titleize) + tag(:br) %>

h进行转义并将结果标记为安全(因为它刚刚被转义)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用于 Rails 的 PHP 模拟 html_safe

来自分类Dev

Rails 4:仅特定标签的html_safe

来自分类Dev

Ruby_Rails上的html_safe无法正常工作

来自分类Dev

html_safe和非html_safe串联

来自分类Dev

为什么Rails html_safe方法会更改我的html结构?

来自分类Dev

使用html_safe时如何解决Rails中的跨站点脚本安全警告?

来自分类Dev

html_safe在rails中的输入字段文本上不起作用

来自分类Dev

在Rails 4(安全版本)中,带有html_safe的Flash消息来自控制器

来自分类Dev

Rails密码重置邮件程序测试未定义方法“ html_safe”错误(使用Clearance gem)

来自分类Dev

整个html代码块中的html_safe

来自分类Dev

截断html_safe文本并保留未关闭的标签

来自分类Dev

大虾PDF语法中html_safe属性的用法

来自分类Dev

自动将HTML标记替换为“ <br>”

来自分类Dev

UserDict不被unittest视为字典

来自分类Dev

TransformerFactory破坏了<html>标记内的<input>和<br>标记

来自分类Dev

actionview :: template :: error(未定义的方法'html_safe'为nil:NilClass)

来自分类Dev

actionview :: template :: error(nil:NilClass的未定义方法'html_safe')

来自分类Dev

所见即所得gem的“ html_safe”方法不起作用

来自分类Dev

当我调用 truncate() 方法时 html_safe 不起作用

来自分类Dev

将HTML标记嵌入rails标记内

来自分类Dev

可以在使用选项字符串 + html_safe 的同时为 f.select 设置选定的值吗?

来自分类Dev

javah不被视为内部或外部命令

来自分类Dev

如果语句不被视为布尔值?

来自分类Dev

术语“ cmake”不被视为cmdlet的名称

来自分类Dev

Solr WhitespaceTokenizerFactory - \r\n 不被视为空白?

来自分类Dev

HTML / CSS -lineheight是否会影响<br>标记?

来自分类Dev

如何从mysql数据中删除除<br>之外的HTML标记?

来自分类Dev

将JSON \ n转换为HTML <br>标记

来自分类Dev

Rails将格式为“ json”的Ajax请求视为“ text / html”

Related 相关文章

  1. 1

    用于 Rails 的 PHP 模拟 html_safe

  2. 2

    Rails 4:仅特定标签的html_safe

  3. 3

    Ruby_Rails上的html_safe无法正常工作

  4. 4

    html_safe和非html_safe串联

  5. 5

    为什么Rails html_safe方法会更改我的html结构?

  6. 6

    使用html_safe时如何解决Rails中的跨站点脚本安全警告?

  7. 7

    html_safe在rails中的输入字段文本上不起作用

  8. 8

    在Rails 4(安全版本)中,带有html_safe的Flash消息来自控制器

  9. 9

    Rails密码重置邮件程序测试未定义方法“ html_safe”错误(使用Clearance gem)

  10. 10

    整个html代码块中的html_safe

  11. 11

    截断html_safe文本并保留未关闭的标签

  12. 12

    大虾PDF语法中html_safe属性的用法

  13. 13

    自动将HTML标记替换为“ <br>”

  14. 14

    UserDict不被unittest视为字典

  15. 15

    TransformerFactory破坏了<html>标记内的<input>和<br>标记

  16. 16

    actionview :: template :: error(未定义的方法'html_safe'为nil:NilClass)

  17. 17

    actionview :: template :: error(nil:NilClass的未定义方法'html_safe')

  18. 18

    所见即所得gem的“ html_safe”方法不起作用

  19. 19

    当我调用 truncate() 方法时 html_safe 不起作用

  20. 20

    将HTML标记嵌入rails标记内

  21. 21

    可以在使用选项字符串 + html_safe 的同时为 f.select 设置选定的值吗?

  22. 22

    javah不被视为内部或外部命令

  23. 23

    如果语句不被视为布尔值?

  24. 24

    术语“ cmake”不被视为cmdlet的名称

  25. 25

    Solr WhitespaceTokenizerFactory - \r\n 不被视为空白?

  26. 26

    HTML / CSS -lineheight是否会影响<br>标记?

  27. 27

    如何从mysql数据中删除除<br>之外的HTML标记?

  28. 28

    将JSON \ n转换为HTML <br>标记

  29. 29

    Rails将格式为“ json”的Ajax请求视为“ text / html”

热门标签

归档