2

WebMatrixかみそり(C#)のセキュリティに関する簡単な質問があります

私は(非常に短い期間)SQLインジェクションに対抗するためにフォームを検証するために文字チェックを使用することを検討しましたが、クエリのパラメータ化がこれに対抗するための最良の方法であることに気付いた後、このチェックをコメントアウトしました。 :

    foreach(char c in POIName)
    {
        if(c=='\'' || c=='$' || c=='\"' || c=='&' || c=='%' || c=='@' || c=='-' || c=='<' || c=='>')
        {
            errorMessage = "You have entered at least one invalid character in the \"POI Name\" field. Invalid characters are: [\'], [\"], [&], [$], [@], [-], [<], [>], and [%]";
        }
    }

さて、私の質問はこれです:これらのような行は必要ないので(テキストエリアなどで最大限のユーザーの自由を可能にするために)完全に削除する必要がありますか、それともWebMatrixに固有の(またはそれに固有ではない)文字チェックがまだあるべきですか?案件)。

おそらく「@」または「;」を許可しないでください または"<"または">"??

私が理解していることから、クエリをパラメータ化することで(私が持っているように)、有害な文字を自動的にエスケープし、すべてを文字列として再ラップします(またはとにかくそのようなものです、笑)、そして私のデータベースはSQLインジェクション攻撃のいずれに対しても不浸透性であることが証明されましたそれに投げました。

かみそりが何らかの形で影響を受ける可能性があるのか​​、XSSについて心配する必要があるのか​​わからないので心配していると思います(私はブログや、htmlタグやあらゆる種類の山形文字を受け入れるべきものではありません)。

この質問がいたるところにある場合は申し訳ありませんが、Stack Overflowが通常提供するような答えの決定的なものを見つけるために他にどこを探すべきかわかりません(たとえば、このコミュニティは、いくつかのGoogle検索よりもはるかに信頼しています。私は投稿する前に試したことを保証します)。

助けてくれてありがとう!

4

1 に答える 1

4

わかりました、ここに2つのポイントがあります。あなたはユーザー入力をスクラブするために「ブラックリスト」に従事することについて話している。より良いアプローチは「ホワイトリスト」です。許可される文字を定義します。攻撃者がすばやく作成されたブラックリストを創造的に回避する方法はたくさんあります。

第二に、XSSはトリッキーな獣です。エンコーディングとホワイトリストは、それと戦うために使用できます。アドバイスについては、 MicrosoftのAnt-XSSライブラリを参照することをお勧めします。ただし、一般的には、保護しようとしているページのセクションに適したエンコーディングを使用する必要があります。

要約すると、私があなたに与えることができる最善のアドバイスは、OWASP、特にOWASPトップ10に精通することです。これは、アプリケーションを保護するためのすばらしいリソースです。

于 2012-10-10T19:04:13.193 に答える