如何在Ruby中定义一个方法以具有与escapeHTML相同的功能?

时间:2014-03-18 23:44:45

标签: ruby erb

我希望代码使用名为" h"的方法。在ERB中具有相同的输出此代码:

<code>
  <%= CGI::escapeHTML(the_string) %>
</code>

输出上述代码:

<!doctype html> <head><meta charset="utf-8"><title>Black Cat</title></head> <img 
src=blackcat.gif /> <script type="text/javascript">alert('If you see this, your\'re 
vulernable to XSS!');</script>

以网站形式输出上述代码以澄清:http://hills.ccsf.edu/~wly3/cs132a/lab4.cgi

两个问题:

1)我应该如何修改此代码以合并escapeHTML并删除不必要的代码? (我不确定哪个需要/包括我需要)

module CgiHelper

require 'cgi'
require "erb"
include ERB::Util

  def h
    #code
  end

2)我应该如何在开始时修改ERB,以便它与&#34; h&#34;方法

感谢任何帮助。试验和错误暂时没有返回结果。

1 个答案:

答案 0 :(得分:1)

1)创建h辅助方法

module CgiHelper
  require "erb"
  include ERB::Util

  def h(s)
    html_escape(s)
  end
end

2)使用h辅助方法

<code>
  <%= h(the_string) %>
</code>