昨天刚上线一个网站,今天数据库里就被注入脚本代码,真是郁闷,做的东西怎么这么不安全呢,高手们给点建议吧!
解决方案 »
- C# GridView 中 Linkbutton属性CommandName=Edit的问题
- 求小说采集器的实现原理!有demo更好!
- 一个页面中含有多个datagrid
- 请教,用IE监控实时画面,是不是都要用上meta属性来自动刷新画面数据
- GridView的SelectCommand如何添加自定义子句
- Aspx里面,如何使用 javascript 写的 calender?
- 这几天老是为excel发愁,也查不到资料,请大伙帮忙,以下是我的代码,虽说可以保存到excel,可是我要的效果是excel先新建一个显示出来,然
- 如何提高查询语句的速度?
- svn问题
- 请问:向数据库中插入一条记录后,如何得到该条记录在数据库中的ID?
- 用C#写一个类似ActiveX,在asp.net调用.
- 上传文件
本人也碰到过,自vs2005后,
本人数据访问层用强类型的DataSet后,再没发生被注入的情况!!
防止用户输入过长的字符.textbox.maxlength().
限制错误信息给出的提示比如捕获到异常时,
只显示一些通用的信息比如"数据源错误",而不是显示"exception.message"的信息,它可能会暴露出你系统的攻击点.
还有就是要小心的去掉特殊字符.
可以将单引号替换为2个单引号.
还有就是使用参数化命令啊,用存储过程执行转换来防止啊
限制用户访问数据库的帐号的权限啊.
txthouseNo.Text.Replace("'", "")
把文本框里的单引号替换成 空格
2、注意上传组件被盗用。
3、注意数据库最高权限不要给程序,比如删除数据库。
2 使用orm框架等
3 最简单的,看一下IIS日志
参考
{
string sql = @"update AdminGroups set big_id=@big_id,admin_id=@admin_id where [id]=@id ";
SqlParameter[] Parms = {
new SqlParameter("@id", SqlDbType.Int),
new SqlParameter("@big_id", SqlDbType.VarChar),
new SqlParameter("@admin_id", SqlDbType.Int),
};
Parms[0].Value = newAdminInfo[0];
Parms[1].Value = newAdminInfo[1];
Parms[2].Value = newAdminInfo[2];
int i = SQLHelper.ExecuteNonQuery(sql, Parms);
return i > 0 ? true : false;
}
[id]=@id
this.textbox.text.trim();
这些都是防止的。
cookies也要少用其所长
由于恶意攻击者需要在输入框总输入的文本一般是含有"or”,"and”,"select","update","insert"等等之类的字符串片段,所以在拼接SQL之前先检查该用户提交的文本中是否含有这些敏感字符串,如果含有则终止操作。