1、ユーザーが html タグなどを入力できるようにするため<script>
、web.config で asp.net validate Request を無効にしました。
<httpRuntime requestValidationMode="2.0"/>
<pages validateRequest="false"/>
xss
2、攻撃を防ぐために、HttpUtility.HtmlEncode
文字列をエンコードするように追加しました。
3、私の Web アプリケーションでは、ユーザーは自分の記事を追加および編集できますが、ArticleEdit.aspx ページの TextBox のページ読み込みフェーズでエンコードする必要があるかどうかはわかりません。
例えば:
ArticleEdit.aspx:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<input type="text" id="articleTitle" runat="server" />
</form>
</body>
</html>
ArticleEdit.aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
string titleText = "<script>alert('1111');</script>"; //string "<script>alert('1111');</script>" is fetched from DB;
articleTitle.Value = titleText;
}
質問 1:
以下のように titleText 文字列をエンコードする必要がありましたか?
string titleText =HttpUtility.HtmlEncode("<script>alert('1111');</script>");
articleTitle.Value = titleText;
質問 2:
文字列をエンコードすると、ページの読み込みが完了すると、ユーザーには ではなくエンコードされた文字列が表示され
<script>alert('1111');</script>
ます"<script>alert('1111');</script>"
。
これを解決する方法は?
英語が下手で申し訳ありません。よろしくお願いします!