黑马程序员技术交流社区

标题: 怎样防止SQL代码注入漏洞? [打印本页]

作者: ARMdong    时间: 2012-8-2 07:23
标题: 怎样防止SQL代码注入漏洞?
例如 1' or '1'  '1之类的注入漏洞
作者: 蔡尚猛    时间: 2012-8-2 07:39
老兄!杨老师的视频讲的很清楚了呀,方法很多的,1、比如正则表达式检索输入的字符是否符合要求,2、使用javascript对输入的字符过滤,当时杨老师讲的是使用SqlParameter传参
{:soso_e100:}
作者: 李帅    时间: 2012-8-2 07:43
恩 视频里有讲的  比如像这样

            string sql = "insert into Admin(UserName,Password)values(@UserName,@Password)";
            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = ".......";
            SqlCommand com = new SqlCommand(sql, conn);
            com.Parameters.Add(":UserName",SqlDbType.NVarChar, 60).Value = userName;
            com.Parameters.Add(":Password", SqlDbType.NVarChar, 60).Value = password;
            conn.Open();
            int rowsAffected = com.ExecuteNonQuery();
            conn.Close();
            com.Dispose();
作者: 韩迎龙    时间: 2012-8-2 08:17
我所知道的防止SQL注入就是给给字段加参数,也就是这样的:
com.Parameters.Add("@UserName",SqlDbType.NVarChar, 60).Value = userName;
但是今天看到博主的问题,我在网上查看一下,现将网址分享如下:
http://hi.baidu.com/liulin0712/item/34dbd7ea7b69f60e65db0072
作者: 刘玺    时间: 2012-8-3 12:37
杨老师讲的注入式漏洞应该是:1' or '1'='1。你写的那个应该早不成漏洞。  
ADO.NET中的SQL语句,你不要使用拼接字符串的方式。而换成参数化查询方式就可以防止注入式漏洞。 1' or '1'='1,实际上就就是跟你在cmd.CommandText="..."; SQL语句中的链接字符串方式拼接成了 一个 结果为 select... or '1'='1' 这个语句什么时候都会有结果,所以会造成注入式漏洞。
作者: 李晋    时间: 2012-8-3 12:57
1过滤输入的东西
2用参数化查询
3用Linq
作者: 赵刘滨    时间: 2012-8-5 19:28
主要的就是给字段加上参数
作者: 吴凡    时间: 2012-8-10 00:42
注入漏洞就是 利用字符串拼接的漏洞将 输入参数 当关键字输入了。
利用参数化参训就强制性的讲 输入的字符串 当做字符串使用。  系统不会在产生歧义。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2