对于Rails Tutorial,我知道解决方案是什么。 (它也是here。)我不明白为什么逃避HTML是必要的。我想我对它的作用感到困惑。具体来说,在本教程给出的user_profile_test.rb文件中,我们进行了以下测试:
test "profile display" do
get user_path(@user)
...
assert_select 'div.pagination'
@user.microposts.paginate(page: 1).each do |micropost|
assert_match micropost.content, response.body
end
end
为什么在本次测试中不需要转义HTML,在第12章练习中是必要的?
答案 0 :(得分:1)
您需要转义HTML,以便在数据到达数据库之前对其进行清理。
来自Ruby Docs:
CGI::escapeHTML('Usage: foo "bar" <baz>')
# => "Usage: foo "bar" <baz>"
如果您没有使用escapeHTML
,有人可能会在其中放置<script>
标记并可能会写一些有害代码。也许这是一个社交网站,人们在他们的评论中嵌入了一些恶意软件,然后每个访问页面的人都和你一样糟糕。
就测试而言,我认为这就是原因,因为你可以控制测试。但与此同时,我真的不明白为什么不会在测试中添加escapeHTML
,但也许在学习的地方不需要它。