2

リンクの名前がデータベースから取得された場合、Html.Encode メソッドを呼び出して名前を消去する必要がありますか?

例えば:

Html.ActionLink(Model.PersonFromDB.FirstName,
                "Action",
                "Controller",
                new RouteValueDictionary { { "id", Model.PersonFromDB.Id } },
                null)

また:

Html.ActionLink(Html.Encode(Model.PersonFromDB.FirstName),
                "Action",
                "Controller",
                new RouteValueDictionary { { "id", Model.PersonFromDB.Id } },
                null)

<a>とタグの間のページに危険な文字列が挿入されないようにするためにこれを行うことは理にかなっていますが</a>、アンカー タグ間でスクリプトなどを実行できますか?

4

3 に答える 3

6

いいえ、 SO のこのスレッドに よると、HtmlAction.Link()すでに HTML は値をエンコードしているため、2 回行うことになります。

于 2010-02-17T20:10:21.737 に答える
0

これは確かに良い考えですが、ユーザーが名前として潜在的に悪意のある文字列を入力するのを防止する必要があります。

于 2010-02-17T20:00:22.283 に答える
-1

そのとおり。原則として、信頼できないソースから最初に取得した HTML を出力しようとしている場合、フォーマットがまだ HTML ではない (そして十分に精査されている) と仮定すると、インジェクション攻撃から保護するために常に文字列を HTML エンコードする必要があります。

于 2010-02-17T19:56:11.893 に答える