stackoverflowは、自分の質問に正しい答えを常に与えることによって、私のコーディングのキャリアに大きく貢献しました。しかし、この質問は少し具体的かもしれません。うまくいけば、それはサイトへの最初の投稿なので厳しい回答は得られません。SQL Server 2012のSQLインジェクション
私は、ユーザーがさまざまな列を検索できるようにするSQL Server 2012ストアドプロシージャの作成に興味があります。私はそれが私が期待するものを格納されたprocを作成したと信じていますが、私はSQLインジェクションの試みが心配です。 SQLインジェクションを使用して、すべての利用可能なベースを念頭に置いたことがありますか?そうでない場合は、私のサンプル保存されたprocを回避する方法について私に教えてください。ご注意ください:記載されているものは、会社のデータ構造を保護するために変更されています。ストアドプロシージャ
:
CREATE PROCEDURE [dbo].[spSearch]
(
@searchTerm varchar(50) = NULL
)
AS
set @searchTerm = LTRIM(RTRIM(@searchTerm));
select a.ID
,a.Col1
,a.Col2
,a.Col3
,a.Col4
,a.Col5
,b.Col1
from table1 a
left join table2 b on a.ID = b.ID
where (a.Col1 like '%' + @searchTerm + '%'
or a.Col2 like '%' + @searchTerm + '%'
or a.Col3 like '%' + @searchTerm + '%'
or a.Col4 like '%' + @searchTerm + '%'
or b.Col1 like '%' + @searchTerm + '%'
or b.Col2 like '%' + @searchTerm + '%'
or b.Col3 like '%' + @searchTerm + '%'
or b.Col4 like '%' + @searchTerm + '%'
or b.Col5 like '%' + @searchTerm + '%'
or b.Col6 like '%' + @searchTerm + '%')
GO
私の主な関心事は、50文字のVARCHARパラメータに敵対的なSQLコマンドを渡すと、それはさまざまなwhere句等のいずれで実行させるの働かです。
パラメータを使用してSQLインジェクション攻撃をカバーしました。敵対的なコマンドは、敵対的なコマンドの文字列を検索しているかのように、単純な "検索テキスト"と見なされます。 –
これはこのレベルでは問題ではありません。すでにパラメータ化されているため、あたかもパラメータの値を参照しているかのように動作します。 – Siyual
ところで、このパラメータを取得してSQL Serverに送信する時点で、まだSQLインジェクション攻撃の穴が導入されている可能性があります。 –