How to protect user specified table name from SQL Injection in C#, using MySQLの拡張として、 SQL インジェクションからuser-specified-table-query を保護する方法を見つけようとしています:
string createEventSQL = "INSERT INTO " + TableNameFromUser +
" (" + TableColumnNames + ") " +
"VALUES(" + ParametrizedTableColumnParams + ")";
明確にするために:入力をパラメータ化するために定義済みのライブラリを使用したいのですが、見つかりません。
SHOW TABLES LIKE @TableNameFromUser;
パフォーマンスが問題になるため、これを保護するために追加のクエリ (例: ) を使用したくありません。
多くの人が 100% 安全なソリューションを作成することは不可能だと主張しているように思えますが、それは私には意味がありません。 . 基本的に、パラメータ化されたテーブル名をサポートしている場合に、 MySQL コネクタが行うことを複製したいだけです。
私はまだSQLの経験があまりありませんが、これまでのところ、次のことが必要であることがわかりました。
- エスケープ可能なすべての文字をエスケープ/無効にします。
- 「--」を無効にする
SQL インジェクションから保護するために他に何ができますか?