2016-06-17 10 views
1

Rails Tutorialについては、私はその解決策を知っています。 (それはまたhereです。)私はなぜHTMLをエスケープする必要があるのか​​分かりません。私はそれが何をしているのか混乱していると思う。具体的には、このチュートリアルで与えuser_profile_test.rbファイルには、我々は次のテストがありますRailsチュートリアル:第12章のCGI.escapeHTMLの理由演習2

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章の演習1で必要とされますか?

答えて

1

データベースにヒットする前にデータをサニタイズするには、HTMLをエスケープする必要があります。 Rubyのドキュメントから


CGI::escapeHTML('Usage: foo "bar" <baz>')
# => "Usage: foo &quot;bar&quot; &lt;baz&gt;"

あなたはescapeHTML誰かがそこに<script>タグを入れて、潜在的にいくつかの有害なコードを書くことができ使用しなかった場合。多分それはソーシャルネットワークのサイトであり、人々は自分のコメントにいくつかのマルウェアを埋め込んでいるので、ページを訪問するすべての人に悪い時間があります。

あなたがテストを制御できるので、テストが行​​く限り、私はそれが理由だと思います。しかし同時に、なぜ私は実際にはescapeHTMLをテストに追加しないのか分かりませんが、勉強しているところでは必要ないかもしれません。

関連する問題