组合查询的实现
2007-03-06 19:19
197 查看
create proc test(@username char(10),@usersex char(2),@useraddress varchar(100))
as
declare @sqlstr varchar(1000)
set @sqlstr='select top 100 * from datatable where 1=1'
if @username<>''
set @sqlstr=@sqlstr + ' and username like ''%'' + @username+ ''%'''
if @usersex<>''
set @sqlstr=@sqlstr + ' and usersex= ''' + @usersex + ''''
if @useraddress<>''
set @sqlstr=@sqlstr + ' and useraddress like ''%'' + @useraddress''%'''
exec(@sqlstr)
由于是组合条件生成的SQL 语句,所以防注入式攻击也就十分重要了,暂时没有太好的办法,用了一个下面的函数:
#region
/// <summary>
/// 函数功能:检查一下当前页面中所有的TextBox,看看是不是有SQL 注入式的攻击!
/// 作者:黄海
/// 日期:2007-3-05
/// </summary>
/// <param name="page"> 指定的页面</param>
/// 用法:ErrorSql(this)
public bool ErrorSql(System.Web.UI.Control page)
{
string[] ErrorSql ={ "delete ", "insert ", "select ", "update ", "exec ", "declare " ,@"""",@"/", "$", "!", "<", ">", "?", "#", "^", "%", "@", "~", "`", "&", "*", "(", ")", ";", ":", "+", "="};
int nPageControls = page.Controls.Count;
for (int i = 0; i < nPageControls; i++)
{
foreach (System.Web.UI.Control control in page.Controls[i].Controls)
{
if (control is TextBox)
{
string temp=(control as TextBox).Text;
for(int j=0;j<ErrorSql.Length;j++)
{
if(temp.IndexOf(ErrorSql[j].ToString())>=0)
{
return true;
}//end if
}//end for
}//end if
}//end foreach
}//end for
return false;
}
#endregion
as
declare @sqlstr varchar(1000)
set @sqlstr='select top 100 * from datatable where 1=1'
if @username<>''
set @sqlstr=@sqlstr + ' and username like ''%'' + @username+ ''%'''
if @usersex<>''
set @sqlstr=@sqlstr + ' and usersex= ''' + @usersex + ''''
if @useraddress<>''
set @sqlstr=@sqlstr + ' and useraddress like ''%'' + @useraddress''%'''
exec(@sqlstr)
由于是组合条件生成的SQL 语句,所以防注入式攻击也就十分重要了,暂时没有太好的办法,用了一个下面的函数:
#region
/// <summary>
/// 函数功能:检查一下当前页面中所有的TextBox,看看是不是有SQL 注入式的攻击!
/// 作者:黄海
/// 日期:2007-3-05
/// </summary>
/// <param name="page"> 指定的页面</param>
/// 用法:ErrorSql(this)
public bool ErrorSql(System.Web.UI.Control page)
{
string[] ErrorSql ={ "delete ", "insert ", "select ", "update ", "exec ", "declare " ,@"""",@"/", "$", "!", "<", ">", "?", "#", "^", "%", "@", "~", "`", "&", "*", "(", ")", ";", ":", "+", "="};
int nPageControls = page.Controls.Count;
for (int i = 0; i < nPageControls; i++)
{
foreach (System.Web.UI.Control control in page.Controls[i].Controls)
{
if (control is TextBox)
{
string temp=(control as TextBox).Text;
for(int j=0;j<ErrorSql.Length;j++)
{
if(temp.IndexOf(ErrorSql[j].ToString())>=0)
{
return true;
}//end if
}//end for
}//end if
}//end foreach
}//end for
return false;
}
#endregion
相关文章推荐
- OpenJweb平台中自定义组合查询条件窗口的实现方式(经典之作)
- 组合查询(通过Criteria接口实现动态构造查询条件)
- 使用HQL语句方式实现多表多条件组合模糊查询
- PowerBuilder中通用组合条件查询模板的实现
- sql模糊查询实现组合查询
- lotus notes 开发中BS下实现组合查询的方法
- JavaScript与Web Service组合实现无刷新交互(扩展)--查询数据库
- Linq 实践一,实现用户自定义组合查询
- sku组合查询算法探讨-之JS实现示例
- 搬砖中的小事之代码(十)--EasyUI多条件组合查询的实现
- eaeyui-combobox实现组合查询(即实现多个值得搜索)
- PowerBuilder中通用组合条件查询模板的实现
- OpenJweb平台中自定义组合查询条件窗口的实现方式(经典之作)
- 关于组合查询的实现
- OpenJweb 1.6中自定义组合查询条件的实现方式
- 组合查询存储过程的实现
- VB.NET版机房重构----模板方法+存储过程实现组合查询
- 组合查询实现代码
- JavaScript与Web Service组合实现无刷新交互(扩展)--查询数据库
- 机房重构之模版方法实现组合查询