ダイナミックSQL接続は注入を防ぐ
Parameterセキュリティコールを使用してページング保存プロセスにSQL注入がないとは信じないでください.
次のようになります.
この呼び出しにはSQL注入も存在する.
NewsテーブルのTitleに「ブログパーク」がある記事を調べたいのですが、
PageIndex = 1
PageSize = 20
Tables = "News"
Fields = "*"
Where=「Title like'%ブログ園%'」
GroupBy = ""
OrderBy = "NewsID Desc"
この書き方は正しい.
ユーザーが「'%'or 1=1;--」と入力すると、SQL注入が存在します.
Where値をつづるときにテキストボックスの値を取るには、必ず不正な文字をフィルタします.
SQLパッチが存在する限り注入は存在する
SQLは自動的に次のように結合されます.
select*from News where Title like'%ブログ園%'正しい
select * from News where Title like '''%''''''%''' or 1=1;--%'' インジェクションの存在
次のようになります.
DbParameter[] dbParams
=
{
Data.MakeInParam(
"
@PageIndex
"
, (DbType)SqlDbType.Int,
4
, pageIndex),
Data.MakeInParam(
"
@PageSize
"
, (DbType)SqlDbType.Int,
4
, pageSize),
Data.MakeInParam(
"
@Tables
"
, (DbType)SqlDbType.NVarChar,
1000
, tableName),
Data.MakeInParam(
"
@Fields
"
, (DbType)SqlDbType.NVarChar,
2000
, fieldList),
Data.MakeInParam(
"
@Where
"
, (DbType)SqlDbType.NVarChar,
2000
,
where
),
Data.MakeInParam(
"
@GroupBy
"
, (DbType)SqlDbType.NVarChar,
2000
, groupBy),
Data.MakeInParam(
"
@OrderBy
"
, (DbType)SqlDbType.NVarChar,
1000
, orderBy),
Data.MakeOutParam(
"
@ReturnCount
"
, (DbType)SqlDbType.Int, totalRecords),
};
list
=
Data.GetDbDataReader(
"
getPagerROWOVER
"
, dbParams).ToList
<
TResult
>
();
この呼び出しにはSQL注入も存在する.
NewsテーブルのTitleに「ブログパーク」がある記事を調べたいのですが、
PageIndex = 1
PageSize = 20
Tables = "News"
Fields = "*"
Where=「Title like'%ブログ園%'」
GroupBy = ""
OrderBy = "NewsID Desc"
この書き方は正しい.
ユーザーが「'%'or 1=1;--」と入力すると、SQL注入が存在します.
Where値をつづるときにテキストボックスの値を取るには、必ず不正な文字をフィルタします.
SQLパッチが存在する限り注入は存在する
SQLは自動的に次のように結合されます.
select*from News where Title like'%ブログ園%'正しい
select * from News where Title like '''%''''''%''' or 1=1;--%'' インジェクションの存在