使用存储过程能够防止SQL注入,但是,插入,修改,删除,都好说,而查询语句还真不知怎么写,我现在的办法是查询语句用的是字符串拼接方式,这样就给系统留下引反,我想把查询语句也用存储过程,可就是不知道怎样写存储过程,每一个表查询的参数都是用户随意给的,每次查询的条件都不一样啊,而且每一个表的字段又那么多,到底该怎么做.
查询SQL到底怎么写?
除了用存储过程外大家还有什么好的防止SQL注入的办法没有?
查询SQL到底怎么写?
除了用存储过程外大家还有什么好的防止SQL注入的办法没有?
/// <summary>
/// 验证参数
/// </summary>
/// <param name="parameter"></param>
/// <returns></returns>
public string Parameter(string parameter)
{
ArrayList ary=new ArrayList();
ary.Add("select");
ary.Add("insert");
ary.Add("update");
ary.Add("delete");
ary.Add("exec");
ary.Add("create");
//sql关键字等等.........
if(parameter!=null)
{
for(int i=0;i<ary.Count;i++)
{
if(parameter.IndexOf(ary[i] as string)!=-1)
{
return null;
}
}
}
return parameter;
}
#endregion
如果他能猜出你表的结构,给你表里面加数据,你就得想想了.
SET @sql=
'UPDATE gcfyb SET fyval=round('+@new_jsgs1+',2) FROM gcfyb WHERE fydh='''+@fydh+''' and xhid IS NOT NULL AND new_jsgs IS NOT NULL and projectid=''4ce050d4-44e3-47cd-8903-fb7b420cb628'''
EXEC(@sql)
表示层用什么方法把参数传递给数据层?
二. 第三方DLL 如:filter.dll 只需在Web.config里配置下,很方便的
set @DirControlTitle = replace(@DirControlTitle,'''','''''')