当前位置:编程学习 > C#/ASP.NET >>

100分求防SQL注入函数代码

要求ASP.NET(C#)写的,代码清晰易懂,有注释,还要调用函数的代码怎么写 --------------------编程问答-------------------- --------------------编程问答-------------------- 目前防范SQL注入的最主流的方式就是用带参数的SQL语句或存储过程。 --------------------编程问答-------------------- 用带参数的语句是最可靠的

Sqlparameter --------------------编程问答--------------------
引用 2 楼  的回复:
目前防范SQL注入的最主流的方式就是用带参数的SQL语句或存储过程。


假如问我如何在几个字内简单、傻瓜化地方式可以解决这个问题,我也是觉得这是最好的回答。

盲目地去过滤什么字符是很可笑的,这也会掩盖一些根本不合给的“东郭先生”到你的编程队伍里。

比如说,对于使用sql server的程序员,谁说用户登录名就不允许有单引号?先不考虑可以在业务逻辑上找什么理由,单从技术上来说,如果一个程序员做不到让用户登录名可以包括单引号,他就根本不合格去做数据库编程。 --------------------编程问答-------------------- 对这个问题我的观点非常直接了当,我可以不惜牺牲自己良好形象去公然“鄙视”各种所谓的“过滤”函数。

实际上每一个高产品质量检测的人都应该懂得,你恰恰应该去用各种所谓的“敏感字符”去刻意地测试,当输入带有个别这些字符的内容时,被检测的系统运行正常、从数据库中可以正常地检测出完整的输入内容(例如输入字符串中包含单引号,而不是把它看作什么“截断”符号)。

你应该非常自信地把一个测试合格的产品发布出来,它应该可以接受和正确处理所有可能的用户输入,而不是去过滤用户输入。 --------------------编程问答--------------------
引用楼主  的回复:
要求ASP.NET(C#)写的,代码清晰易懂,有注释,还要调用函数的代码怎么写

你是不是来搞笑的? --------------------编程问答--------------------
引用 1 楼  的回复:
SQL 注入
http://msdn.microsoft.com/zh-cn/library/ms161953%28v=sql.90%29.aspx

新型 SQL 截断攻击和防御方法
http://msdn.microsoft.com/zh-cn/magazine/cc163523.aspx

eb应用的安全攻防之SQL注入攻击
https://msevents.microsoft……


学习了 --------------------编程问答-------------------- 一般还是通过参数编程与过滤字符的方式来防止注入 --------------------编程问答-------------------- 还是没得到自己想要的答案 --------------------编程问答--------------------
引用 1 楼  的回复:
SQL 注入
http://msdn.microsoft.com/zh-cn/library/ms161953%28v=sql.90%29.aspx

新型 SQL 截断攻击和防御方法
http://msdn.microsoft.com/zh-cn/magazine/cc163523.aspx

eb应用的安全攻防之SQL注入攻击
https://msevents.microsoft……


我现在要的就是一个函数,帮我写的,我愿意把大部分的分都给他 --------------------编程问答-------------------- 拼接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注入 --------------------编程问答--------------------
引用 10 楼  的回复:
引用 1 楼 的回复:
SQL 注入
http://msdn.microsoft.com/zh-cn/library/ms161953%28v=sql.90%29.aspx

新型 SQL 截断攻击和防御方法
http://msdn.microsoft.com/zh-cn/magazine/cc163523.aspx

eb应用的安全攻防之SQL注入攻击
https://mseve……

坑爹  楼上都说了那么多 你就来句 给我代码 我擦 你有没有看回复啊 --------------------编程问答-------------------- 敏感特殊字符可以输入,但是你检查到,就得给他替换为中文形式的。

还有这些特殊字符的编码,有些注入并不是用特殊字符,而是用这些特殊字符一些编码,照样能注入的

单纯的过滤,关键字符串,是不管用的。 --------------------编程问答-------------------- 有理啊!
引用 5 楼  的回复:
对这个问题我的观点非常直接了当,我可以不惜牺牲自己良好形象去公然“鄙视”各种所谓的“过滤”函数。

实际上每一个高产品质量检测的人都应该懂得,你恰恰应该去用各种所谓的“敏感字符”去刻意地测试,当输入带有个别这些字符的内容时,被检测的系统运行正常、从数据库中可以正常地检测出完整的输入内容(例如输入字符串中包含单引号,而不是把它看作什么“截断”符号)。

你应该非常自信地把一个测试合格的产品……
--------------------编程问答-------------------- 参数化就行了。一般用一个成熟的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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,