1

私は25人の開発者のチームのメンバーです.私たちはセキュリティが私たちにとって重要であるmvc.netアプリケーションを使用@Html.AntiForgeryToken()しています.私たちはセキュリティに関連するものを使用していますが、XSSハッキングを防止することを懸念しています. ユーザーからのhtmlが必要な場所を除いて、どこでもエンコードします。XSS ハッキングを防止するためのベスト プラクティスは何ですか?

4

1 に答える 1

3

XSS を防止するための黄金律は、ビューに出力するすべてのものを HTML エンコードすることです。

うまくいけば、@Razor 関数がすでにそれを自動的に行ってくれます。

したがって、次のいずれかを書くと、かなり安全です。

@Model.SomeProperty
@Html.DisplayFor(x => x.SomeProperty)

@Html.Rawヘルパーには注意する必要があります。

@Html.Raw(Model.SomeProperty)

それを使用すると、出力は HTML エンコードされません。これは、サイトが XSS インジェクションに対して脆弱であることを意味するものではありません。たとえば、プロパティを完全に制御していて、ユーザー入力から来ていない場合は、かなり安全です。

<%=WebForms ビュー エンジンを使用している場合は、関数が出力を HTML エンコードしないため、より注意する必要があります。

したがって、以下は安全ではありません。

<%= Model.SomeProperty %>

次のいずれかを使用する必要があります。

<%= Html.DisplayFor(x => x.SomeProperty) %>
<%: Model.SomeProperty %>

一方、HTML エンコーディングなしでユーザー入力を出力する必要がある場合はAntiXSS、Microsoft のライブラリを使用することをお勧めします。入力からすべての危険なタグが除外されるため、安全に出力できます。たとえば<script>、入力からタグを削除します。article on MSDNこのライブラリについてもチェックアウトできます。

于 2013-01-27T17:41:22.097 に答える