質問: 安全なユーザー入力 エスケープ文字やユーザー入力のサニタイズに関する多くのフォーラム(およびスタックオーバーフロー)の記事を読んだことがありますが、それをすべてまとめてAndroidプラットフォームに固有のものにしたいと思います。私の状況は次のとおりです。 SOAP XMLメッセージを使ってWebサービスと通信するAndroidアプリがあります。送信される可能性のあるXMLメッセージのサンプルを示します(SOAPエンベロープを外しています)。 ``` ``` `user entered text` ``` ``` `user entered text` `ご覧のとおり、ユーザーはこのフォームにテキストを入力してこのメッセージに挿入してWebサービスに送信できる2つの場所があります。私はする必要があります: A)有効なXMLと B)悪質なSQLコンテンツが含まれていないことを確認します。` `Are there any pre-included utilities in the Android API to escape invalid xml chars (such as &) that the user may have entered? (So that I can simply say "escapeXML(xmlstring);" or something like that)` `悪意のあるSQL(または他のコードインジェクション)をチェックする方法はありますか、それはサーバー側で処理する必要がありますか?` `副題として:私はほとんどの場合、ユーザがA-Z、0-9と基本的な句読点を入力できるだけであることを望んでいます(時には見えない、または解釈されない奇妙なユニコード文字を避けるため)。ユーザーの入力を文字のサブセットに制限する良い方法はありますか?` `私はこれが1つに組み込まれたカップルの質問であることを知っているので、もしあなたがその一部を知っていれば、とにかく答えを提供してください。すべての助けを前もってありがとう! (StackOverflowは、私があまりにも多くのフォーラムスレッドを消費したときに私が来るところであり、自分の状況に適したものについて私自身がすべて捻挫した)`
回答: SQLインジェクションを処理する最良の方法は、パラメータ化されたクエリを使用することです。これはサーバー側で行われます。他のすべては二次的であり、不要であり、問題の表面をほとんど傷つけません。 あなたはこれらを読むべきです: * T-SQL INSERTステートメントの安全なDateTime * データベースに値を挿入する際の問題点 * http ://www.codinghorror.com/blog/2005/04/give-me-parameterized-sql-or-give-me-death.html ジェフ・アトウッドのブログで、私は彼の言うところが好きです: > > パラメータ化されていないSQLは、データベースプログラミングのGoToステートメントです。 > > >