卒業論文では、準備済みステートメントを使用して SQL インジェクションの脆弱性を自動的に検出し、修正を提案するプログラムを開発しました。具体的には、PHP の mysqli 拡張機能です。SO コミュニティに対する私の質問は次のとおりです。PHP ソース コード内の SQL を検出するために、どのようなアプローチをお勧めしますか?
を含む列挙型を使用しSQL keywords (SELECT, INSERT, ...)
、基本的に各行を解析し、列挙型を繰り返し処理して、SQL が存在するかどうかを判断しました。さらに、パーサーが html を誤って検出していないことを確認する必要がありました (たとえば、<\select>)。
私にとっては、このソリューションはうまく機能しましたが、今はもう少し時間があり、コードをリファクタリングして、よりエレガントな (そして効率的な) ソリューションを使用することを考えています。私がプログラムを書いたのはC#の使用に限定してください。