100分求防SQL注入函数代码
要求ASP.NET(C#)写的,代码清晰易懂,有注释,还要调用函数的代码怎么写 --------------------编程问答-------------------- --------------------编程问答-------------------- 目前防范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){}
}
补充:.NET技术 , ASP.NET