VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1180|回复: 12

如何使用sql语句防止注入式攻击?

[复制链接]

2

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-2-8 09:00:02 | 显示全部楼层 |阅读模式
听说可以使用sqlcommand Parameters来防止注入式攻击
我写了如下语句:
string sql = "select * from members where userName=@name";
OleDbCommand cmd = new OleDbCommand(sql, con);
con.Open();
//防止注入式攻击
cmd.Parameters.Add("@name", OleDbType.VarChar, 50);
cmd.Parameters["@name"].Value = this.TextBox1.Text;
如果我现在在textbox1中输入的是"'"(逗号),那sql的值是什么?
不懂啊,那位大哥帮忙写一下~
比如说我想把"'"(逗号)变成" "(空格)
回复

使用道具 举报

1

主题

31

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-3-30 14:00:01 | 显示全部楼层
用存储过程就可以防止了.
回复

使用道具 举报

2

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-3-30 16:45:01 | 显示全部楼层
能详细点么?解释一下
回复

使用道具 举报

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-3-30 19:30:01 | 显示全部楼层
用存储过程
回复

使用道具 举报

2

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-3-30 23:30:02 | 显示全部楼层
如何使用呢〉?
比如说我想把逗号变成空格?
回复

使用道具 举报

0

主题

17

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
发表于 2020-4-1 10:00:01 | 显示全部楼层
使用参数,不要拼确定值。
有些问题使用存储过程无法解决。
回复

使用道具 举报

2

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-4-1 19:15:02 | 显示全部楼层
使用参数就是使用我刚才写的语句吧?可我在调试的过程中并没有发现有转换阿?
正确的语句该怎么写啊?
回复

使用道具 举报

0

主题

17

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
发表于 2020-4-2 13:00:02 | 显示全部楼层
如果输入",",生成的sql语句等价于:
"select * from members where userName=','"
如果要替换,可以
cmd.Parameters["@name"].Value = this.TextBox1.Text.Replace(",", " ")`;
回复

使用道具 举报

2

主题

11

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
 楼主| 发表于 2020-4-4 16:45:01 | 显示全部楼层
还是不行啊,我是这样写的
OleDbConnection con = new OleDbConnection ("server=hp;uid=sa;pwd=sa;database=test;Provider=SQLOLEDB");
           string sql = "select * from members where userName=@userName";
            OleDbCommand cmd = new OleDbCommand(sql, con);
           con.Open();
           //防止注入式攻击
           cmd.Parameters.Add("@userName", OleDbType.VarChar, 50);
           cmd.Parameters["@userName"].Value = this.TextBox1.Text.Replace("'", "");
           sql的值还是select * from members where userName=@userName
哪里错了?急啊~
回复

使用道具 举报

0

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-4-4 19:30:01 | 显示全部楼层
使用参数,不使用字符串动态拼接成SQL语句,一般就没问题了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表