100分求防SQL注入函数代码 要求ASP.NET(C#)写的,代码清晰易懂,有注释,还要调用函数的代码怎么写 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 本帖最后由 net_lover 于 2012-07-26 20:04:00 编辑 目前防范SQL注入的最主流的方式就是用带参数的SQL语句或存储过程。 用带参数的语句是最可靠的Sqlparameter 假如问我如何在几个字内简单、傻瓜化地方式可以解决这个问题,我也是觉得这是最好的回答。盲目地去过滤什么字符是很可笑的,这也会掩盖一些根本不合给的“东郭先生”到你的编程队伍里。比如说,对于使用sql server的程序员,谁说用户登录名就不允许有单引号?先不考虑可以在业务逻辑上找什么理由,单从技术上来说,如果一个程序员做不到让用户登录名可以包括单引号,他就根本不合格去做数据库编程。 拼接sql时用参数化处理,算是简单明了的一种方式。Sqlparameter,具体用法百度即可。 简单的sql 过滤 临时写的 public static string SqlFilter( string contents ) { if (!string.IsNullOrEmpty(contents)) { contents = Regex.Replace(contents, " exec | insert | select | delete | update | master | truncate | declare ", "", RegexOptions.IgnoreCase); contents = contents.Replace("'", "''"); } return contents; }最好还是用带参数的语句是最可靠的 不用sql拼接 使用linqtosql方式,就可以杜绝SQL注入 参数化就行了。一般用一个成熟的ORM框架已经把参数化写好了 public class DBHelper{public SqlConnection getConn(){ string url="";//链接数据库sqlConnection conn=new SqlConnection(url); }}public int insertUser(userInfo)//userInfo是数据库表{ sqlConnection conn=null; DBHelper db=new DBHelper(); try{ conn=db.getConn();//连接数据库 conn.open();//打开数据库 string sql="insert into userInfo values(@username,@userPwd)"; SqlCommend cmd=new SqlCommend(sql,conn); Sqlparameter[]para={ new Sqlparameter("@username",username),//username是数据库表的字段 new Sqlparameter("@userPwd",userPwd)//userPwd是数据库表的字段}; parame.add(para);//把para放进去 int result=cmd.execust();//cmd.exee什么的一个方法 返回数值类型的(忘了方法怎样写的) }catch(SqlExection e){}} js简单的正则表达式,不行的话js判断也行啊 datalist的使用问题 存数过程返回值哪里错了啊?急救,毕业设计后天就交 如何能彻底删除数据,而不被还原回来??? 按比例缩放代码有点问题,帮忙看看 零零伍~~~~等高手请进! 网页实现下载 关于session对象的问题 求将多个连续空格替换为一个空格的方法,如"aa bb cc dd" TreeView的TreeNode排序问题。 网站发布到IIS 不能访问 ie6开发的js在360浏览器 搜狗浏览器不能看到晃动的js的经纬度坐标?
假如问我如何在几个字内简单、傻瓜化地方式可以解决这个问题,我也是觉得这是最好的回答。盲目地去过滤什么字符是很可笑的,这也会掩盖一些根本不合给的“东郭先生”到你的编程队伍里。比如说,对于使用sql server的程序员,谁说用户登录名就不允许有单引号?先不考虑可以在业务逻辑上找什么理由,单从技术上来说,如果一个程序员做不到让用户登录名可以包括单引号,他就根本不合格去做数据库编程。
Sqlparameter,具体用法百度即可。
{
if (!string.IsNullOrEmpty(contents))
{
contents = Regex.Replace(contents, " exec | insert | select | delete | update | master | truncate | declare ", "", RegexOptions.IgnoreCase);
contents = contents.Replace("'", "''");
}
return contents;
}最好还是用带参数的语句是最可靠的 不用sql拼接
public SqlConnection getConn(){
string url="";//链接数据库
sqlConnection conn=new SqlConnection(url);
}
}
public int insertUser(userInfo)//userInfo是数据库表
{
sqlConnection conn=null;
DBHelper db=new DBHelper();
try{
conn=db.getConn();//连接数据库
conn.open();//打开数据库
string sql="insert into userInfo values(@username,@userPwd)";
SqlCommend cmd=new SqlCommend(sql,conn);
Sqlparameter[]para={
new Sqlparameter("@username",username),//username是数据库表的字段
new Sqlparameter("@userPwd",userPwd)//userPwd是数据库表的字段
};
parame.add(para);//把para放进去
int result=cmd.execust();//cmd.exee什么的一个方法 返回数值类型的(忘了方法怎样写的)
}
catch(SqlExection e){}
}