これは私のコードの sql の脆弱性ですか?SQL をパラメータ化したので、SQL インジェクションはありませんか? 誰かがいくつかの提案をしていただければ幸いです!もしそうなら、どのように修復しますか?
ASP.NET コード:
public DataTable CompanySearchUser(int pageSize, int currentPage, string whereCondition)
{
DbParameter[] parms = {
DbHelper.MakeInParam("@PageSize",(DbType)SqlDbType.Int,4,pageSize),
DbHelper.MakeInParam("@PageNumber",(DbType)SqlDbType.Int,4,currentPage),
DbHelper.MakeInParam("@where",(DbType)SqlDbType.NVarChar,500,whereCondition)
};
DataTable userlist = DbHelper.ExecuteDataset(CommandType.StoredProcedure, "spCompanySearchUser", parms).Tables[0];
return userlist;
}
SQL コード:
ALTER PROC [dbo].[spCompanySearchUser]
@PageSize INT
@PageNumber INT,
@where nvarchar(550)--like 'and a=1 '
AS
DECLARE @RowStart INT
DECLARE @RowEnd INT
DECLARE @SQL NVARCHAR(4000)
IF @PageNumber > 0
BEGIN
SET @PageNumber = @PageNumber - 1
SET @RowStart = @PageSize * @PageNumber + 1;
SET @RowEnd = @RowStart + @PageSize - 1;
SET @SQL='
WITH AllUsers
AS (SELECT
UB.UserBaicInfoID,
UB.UserName,
UB.HighestEducation,
UB.Age,
UB.Sex,
UB.WorkExperience,
UB.PositionDesired,
UB.UpdateTime,
Row_number() OVER (ORDER BY UB.UpdateTime DESC) AS RowNumber
From UserBasicInfo UB
WHERE ResumeState=1 '+@where+')
SELECT * FROM AllUsers WHERE RowNumber >=' + Str(@RowStart) + ' AND RowNumber <= ' + Str(@RowEnd) + ''
EXEC sp_executesql @SQL
END
これは私のコードの sql の脆弱性ですか?SQL をパラメータ化したので、SQL インジェクションはありませんか? 誰かがいくつかの提案をしていただければ幸いです!もしそうなら、どのように修復しますか?