私たちのソフトウェアは sql-injection に対して脆弱であることがわかりました。
私たちのソフトウェアは、C# と Gizmox フレームワークの一種で書かれています。私たちのフレームワークはパラメーター化されたクエリを処理できず、文字列連結を使用して SQL クエリを作成します。
これはすべて非常に悪いように聞こえますが、長期的にはこれをリファクタリングします。短期的には、迅速な (そしておそらく汚い) ホットフィックスが必要です。
私たちの考えは、正規表現を使用して次のブラックリストに対してユーザー入力を検証することです。
" --
" , " ;--
" , " ;
" , " /*
" , " */
" , " " @@
, " " @
, " " char
, " " nchar
, " " , varchar
" " , nvarchar
" alter
" , " begin
" , " cast
" , " create
" , " cursor
" , " declare
" , " delete
" , " drop
" , " end
" , " exec
" , " execute
" , " " fetch
, " " insert
, " kill
" , " open
" , " select
" , " sys
" , " sysobjects
" , " syscolumns
" , " table
" , " update
"
ブラックリストは最も弱い SQL 保護であるという事実のため、より良い解決策を求めたいと思います。