A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ARMdong 中级黑马   /  2012-8-2 07:23  /  2219 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

例如 1' or '1'  '1之类的注入漏洞

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

7 个回复

倒序浏览
老兄!杨老师的视频讲的很清楚了呀,方法很多的,1、比如正则表达式检索输入的字符是否符合要求,2、使用javascript对输入的字符过滤,当时杨老师讲的是使用SqlParameter传参
{:soso_e100:}

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
恩 视频里有讲的  比如像这样

            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();

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
我所知道的防止SQL注入就是给给字段加参数,也就是这样的:
com.Parameters.Add("@UserName",SqlDbType.NVarChar, 60).Value = userName;
但是今天看到博主的问题,我在网上查看一下,现将网址分享如下:
http://hi.baidu.com/liulin0712/item/34dbd7ea7b69f60e65db0072

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
杨老师讲的注入式漏洞应该是:1' or '1'='1。你写的那个应该早不成漏洞。  
ADO.NET中的SQL语句,你不要使用拼接字符串的方式。而换成参数化查询方式就可以防止注入式漏洞。 1' or '1'='1,实际上就就是跟你在cmd.CommandText="..."; SQL语句中的链接字符串方式拼接成了 一个 结果为 select... or '1'='1' 这个语句什么时候都会有结果,所以会造成注入式漏洞。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
1过滤输入的东西
2用参数化查询
3用Linq

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
主要的就是给字段加上参数

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
吴凡 中级黑马 2012-8-10 00:42:14
8#
注入漏洞就是 利用字符串拼接的漏洞将 输入参数 当关键字输入了。
利用参数化参训就强制性的讲 输入的字符串 当做字符串使用。  系统不会在产生歧义。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马