Web アプリケーションを安全にするために、validation.xml でフィルタリングするさまざまな特殊文字は何ですか?
2 に答える
主な関心事が SQL インジェクションのようなものである場合、最善の防御策はパラメーター化されたクエリを使用することです。
残念ながら、参照用に使用した唯一の記事は iOS と Objective-C に関するものでしたが、パラメータ化されたステートメントに関するウィキペディアのエントリは次のとおりです。
入力データから文字をフィルタリングする理由は、さまざまなプログラミング環境やスクリプト環境で、入力データが制御ステートメントと「混在」するさまざまな状況から保護するためです。
最も典型的な例は、SQL インジェクションとクロスサイト スクリプティングです。SQL インジェクションの例は、次のような SQL ステートメントを作成した場合です。
sql = "select username where username = '" + username + "' and password = '" + password + "'"
ユーザーはユーザー名 admin' (' に注意) を送信します。
クロス サイト スクリプティングの例として、誰かが次の内容のコメントを作成するフォーラムがあります。
"Hi. This is a comment! <script> .. malicious javascript .. </script>"
他にもいくつかのバリエーションがあります。ユーザーが生成した入力を含む電子メールを送信すると、誰かがコードに電子メール ヘッダーを挿入する可能性があります。オペレーティング システムのコマンド ラインでユーザーが生成した入力を使用する場合 (つまり、パスワードを変更する場合)、誰かが他のコマンドも挿入する可能性があります。
これを処理する唯一の安全な方法は、SQL ステートメントを作成したり、Web ページを作成したり、電子メールを送信したりするときに、ユーザーが生成した入力を決して信頼しないことです。
ただし、一種の最初の防御策として、それに加えて、入力を検証するときにユーザーが必要としないことがわかっている、頻繁に使用される文字を除外することができます。典型的なリストには、<>\;"&#^'`?% のような文字が含まれます。注意! これは網羅的なリストではなく、私の頭の前にある典型的な文字を 2 つだけ示したものです。