安全なユーザー入力

エスケープ文字やユーザー入力のサニタイズに関する多くのフォーラム(およびスタックオーバーフロー)の記事を読んだことがありますが、それをすべてまとめて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は、私があまりにも多くのフォーラムスレッドを消費したときに私が来るところであり、自分の状況に適したものについて私自身がすべて捻挫した)

1
私はあなたがおそらく正規表現でそれを制限することができると思いますが、私はしません。最初に、そのように制限することは全く注射から保護しません(必要なのは基本的な句読点です)。第2に、ユーザーが外国の文字セットを使用している(または外国のローンワードを正しく入力しようとしている)場合でも、入力が拒否されている場合、少し嫌なことがあります。通常、フォーマットされたXMLストアエンティティ(クラスインスタンス)を代わりに格納すべきではありません。パラメータ化されたクエリはSQLインジェクションを処理する必要があります。ここではクロスサイトスクリプティングについても注意する必要があります。
追加された 著者 Clockwork-Muse,
あなたのクライアントを知らないと、私は確かに言うことはできませんが、外国語をあなたが気づいたよりも頻繁に使用しているかもしれません。お客様のクライアントが米国でのみ動作する場合でも(ドメイン/場所によってはさらに多くの場合)通常、SOAPを扱うときには、メッセージをシリアライズ/デシリアライズするフレームワーク/ライブラリを使用しています。コードがXMLメッセージから来ていることを必ずしも知っているとは限りません。 Javaにはいくつかありますが、Android固有のバージョンについてはわかりません。
追加された 著者 Clockwork-Muse,
私は外国語の問題に取り組んでいないことを知っています。なぜなら、それは、米国でしか動かない特定のクライアントのために書かれたカスタムアプリなのでです。また、テキスト、数値、句読点への入力を制限するとSQLインジェクションが妨げられるとは考えていませんでしたが、テキストは読みやすいように保つことになりました。 )
追加された 著者 D.R.,

1 答え

SQLインジェクションを処理する最良の方法は、パラメータ化されたクエリを使用することです。これはサーバー側で行われます。他のすべては二次的であり、不要であり、問​​題の表面をほとんど傷つけません。

あなたはこれらを読むべきです:

ジェフ・アトウッドのブログで、私は彼の言うところが好きです:

パラメータ化されていないSQLは、データベースプログラミングのGoToステートメントです。

3
追加された
熱心なGoToが自分自身を嫌うので、私は間違いなくそれを感謝することができ、サーバーサイドで何ができるのかを見ていきます(WebサービスはIBM Maximo資産管理システムに接続されているので、私は限られているかもしれないし、
追加された 著者 D.R.,