我遇到了rails自动转义的问题.它目前认为字符串是html_safe(它是),但出于显示目的,我需要它仍然逃避html.这是字符串采取的步骤.
my_string = render(:partial => "set_string", :locals => {:item => @item})
<%= my_string %>
Run Code Online (Sandbox Code Playgroud)
部分是基本的
<h2>Page Header</h2>
<strong><%= item.name %></strong>
<%= item.body %>
etc
Run Code Online (Sandbox Code Playgroud)
我的理解是因为我在视图中直接显示文本(h2等),它假设它是安全的,并且它也正确地逃避了项目输出,这使整个my_string安全.所以,当我尝试用它显示它时
<%= my_string %>
Run Code Online (Sandbox Code Playgroud)
它没有逃避剩余的HTML.我尝试添加h来强制转义,但这不起作用.
所以我的问题是,无论如何强制html转义安全字符串,而不是在字符串上调用会使其不安全的东西?
非常感谢你的帮助.
我运行一个应用程序,从单个应用程序和服务器托管来自多个域的网站.我正在将其中一些域名移至SSL,但其他域名则保留在http.我正在运行Rails 4.x. 我相信我不能只使用
config.force_ssl = true
Run Code Online (Sandbox Code Playgroud)
因为那将为所有域实现它,我不想要.
我知道在ApplicationController中我可以做类似的事情
force_ssl if: :ssl_required?
def ssl_required?
return [secure_domain1, domain2, domain3].include? request.domain
end
Run Code Online (Sandbox Code Playgroud)
但据我了解,这并没有实现HSTS或安全cookie.我的两个问题是:
如果没有简单的方法来启用HSTS或安全cookie,并且让这些值得麻烦,我可以随时拆分我的应用并将其托管在两个不同的服务器上,其中一个实例包含所有https域,另一个实例仅包含http域.
谢谢你的想法