インジェクションの対策に関して、これを当てにしないでください。使用し、それをクエリに連結する場合、一度くらいは忘れるに決まっています。その一度が命取りになります。絶対に忘れないようにすることは誰にも不可能です。内でも確実に引用符を使用しなければなりませんが、データを数値と仮定している場合などには、これは不自然な行為です。プリペアドステートメントを使用するプリペアドステートメントは非常に安全です。コマンドから分離されています。ユーザーが入力した内容すべてがデータと見なされ、元のままの状態でテーブルに格納されます。statements」を参照してください。問題は、動的クエリを作成する必要がある場合や、プリペアド変数としてサポートされていない変数を設定する必要がある場合、またはデータベースエンジンがプリペアドステートメントに対応していない場合です。指定子としてサポートしていません。文でテーブル名や列などにも使用できません。このような場合は、フレームワークでクエリビルダーが用意されていれば、それを使用します。複数のパッケージが利用できます。独自のものを使用しないでください。適切なセキュリティ慣行です。インジェクション攻撃を受ける可能性があります。クエリを連結した場合と同じ脆弱性が生じてしまいます。したがって、データベースに送信する文字列は絶対に連結してないでください。プリペアドステートメントにも対応しています。実行がどのように処理されるかを確認してください。内部で値を連結するのではなくプリペアドステートメントが使用されていることや、適切なセキュリティ対策に準拠していることを確認します。使用する新しい攻撃ベクトルの多くはエンコードの迂回に基づいています。実行可能かつ一般的なインジェクションがいくつか存在します。)文字列をシェルスクリプトやコマンドとして実行します。設定しだいでは、シェルスクリプトのインジェクションによってアプリケーションの設定や構成が漏えいしたり、サーバー全体が乗っ取られたりする可能性があります。これは非常に危険なインジェクションであり、攻撃者の天国と考えられています。上記の関数に渡すことは絶対にしないでください。エスケープや他のどの対策も効果がありません。それぞれの対策を回避するためのベクトルが多数存在します。未熟な開発者の言うことは信じないでください。はじめ、どのインタープリター言語にも、文字列を受け取ってそれを言語内で実行する関数が用意されています。使用は非常に悪い慣行です。セキュリティ面においてだけではありません。一般に実行が遅くなります。関数を、サニタイズされていないユーザー入力とともに使用しないでください。/etc/passwd')");リフレクションもコードインジェクションの欠陥を持つ場合があります。これは高度なトピックのため、リフレクションに関する適切なドキュメントを参照してください。その他のインジェクションLDAP、XPath、および文字列を実行する他のサードパーティアプリケーションは、インジェクションに対して脆弱です。文字列はデータでなくコマンドである場合もあるので、安全を確保してからサードパーティライブラリに渡す必要があることを常に念頭に置いてください。つのシナリオがあります。それぞれに適切な対策を講じる必要があります。タグをユーザー入力データに含める必要はありません。テキストボックスの値をダンプするときや、セル内のユーザーデータを出力するときなどです。これはお勧めできません。脆弱性が生じるという点にあります。既定で安全でない方法論は、危険なものとして扱う必要があります。すべてテンプレートエンジン経由で渡してください。安全なテンプレートエンジンへの切り替えができない場合は、信頼できないすべてのデータに次の関数を使用します。軽減できないので注意してください。これを行うことはまずありません。タグを含めるつもりのない出力は、すべて次の関数でフィルタリングしてからブラウザーに送信する必要があることにも留意してください。(リッチなブログコメント、フォーラム投稿、ブログ投稿など)、ユーザーを信頼できないときは、安全なエンコードライブラリを使用する必要があります。これは一般に困難で実行も遅くなります。脆弱性があるのはこのためです。データのさまざまな部分をエンコードするためのコード群が用意されています。このいずれも適切に実行するためには多くの設定と学習が必要になりますが、良いアプリケーションを開発するにはこれらが欠かせません。脆弱性からの防御においてプログラマーや設計者を支援するテンプレートエンジンがいくつか存在します。テンプレートエンジンの主眼はセキュリティではなく、設計エクスペリエンスの向上ですが、主要なテンプレートエンジンの大半は出力上の変数を自動的にエスケープし、エスケープしてはいけない変数がある場合は明示することを開発者に強制します。これにより、変数の出力がホワイトリストの性質を帯びます。