Response.Writeとかで文字列を出力する時などで、その文字列がHTMLやJavaScriptとして解釈されたくない場合がある。
たとえば、テキストボックスにJavaScriptを入れて、それがJavaScriptとして解釈された場合、意図しない動作になり、セキュリティ的に問題になる。(SQLインジェクション)
そこでHTMLエンコードすることでそういう問題を回避できる。
HtmlHelper.Encode メソッド (System.Web.Mvc) | Microsoft Learn
第1回 ASP.NET MVCフレームワーク 基本のキ:連載:ASP.NET MVC入門(4/5 ページ) - @IT
ASP.NET MVC Web Application
Controller
FirstController
デバッグモードにする
HomeのIndex.aspx
FirstはViewがないのでエラー
FirstにIndex用のView追加
これで追加
こういうのが追加される
このまま実行すると真っ白
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Index</title> </head> <body> <div> <% string str1 = "<b>‚ ‚¢‚¤‚¦‚¨</b>"; Response.Write(str1); %> </div> </body> </html>
Index.aspxにこれを書くと、
bタグが解釈されるので太字になる。
Html.Encodeを通すと、
プレーンテキストとして解釈されるのでこうなる。
(HTMLエンコードと呼ぶのに、HTMLとして解釈されないようにするというのは、なんか違和感あるけど、こういうものらしい。)
Sample/aspnetmvc/HtmlHelper/Encode/src/HtmlHelper_ at master · bg1bgst333/Sample · GitHub