(2),如果变量 product_id 的值是:"1' or '1' = '1",这个 SQL 语句就是:
SELECT * FROM products WHERE id = '1' or '1' = '1'
你放在数据库里测试看看,无论 id 等于多少,这个语句都能查到结果(只要表 products 里有值)。
我的这段代码怎么改正呢?多谢!新手不太懂!
@王金光: 用 SqlParameter。
string sql = "SELECT * FROM products WHERE id = @id"; SqlParameter parameter = new SqlParameter("@id", product_id); command.Parameters = parameter;
在录入或者读取关键字去查询数据库之前都要先查看一下那些是不是很敏感的字词
string word = "and|exec|insert|select|delete|update|chr|mid|master|or|truncate|char|declare|join|'";
防止sql注入
(1)String product_id = Request["product_id"];//如果为null,不过本句话不会抛异常;String最好统一为string (2)string sql = "SELECT * FROM products WHERE id = '"+product_id +"'";//字符串拼接,SQL注入漏洞,然后*号可以修改为具体字段(我一般不在乎这个) (3)SqlCommand command = new SqlCommand(sql, connection);//最好使用using(),自动释放资源