如何有效的防止SQL连接字符串注入
概念:在编写安全代码时,最重要的规则之一就是“绝对不要盲目的相信用户的输入”。
利用ADO.NET 2.0的SqlConnectionStringBuilder类生成数据库连接字符串,它可以有效的防止“SQL连接字符串恶意注入”,因为这个类是专门为SQL SERVER设计的所以;它兼容旧式关键字。关于如何使用SqlConnectionStringBuilder类,请参考我以前写的一篇“智能数据库连接生成器”文章里。
防止SQL数据库连接字符串示例
C#后台示例代码:
SqlConnectionStringBuilder bldr = new SqlConnectionStringBuilder();
bldr.DataSource = @".\SQLExpress";
bldr.InitialCatalog = "Pubs";
bldr.UserID = textBox1.Text;
bldr.Password = textBox2.Text;
刚才看到前台用户在用户名输入的用户名字符串,就是恶意SQL注入,而SqlConnectionStringBuilder会把
“用户名;Data Source=Northwind”的字符串作为“UesrID”来登录数据库。这就防止恶意的注入了。
最后希望能和志同道合的开发同志,一起学习,一起分享。谢谢
推荐链接:惠普黑白激光打印机/爱普生针式打印机
相关文档:
DECLARE @dt datetime
SET @dt=GETDATE()
DECLARE @number int
SET @number=3
--1.指定日期该年的第一天或最后一天
--A. 年的第一天
SELECT CONVERT(char(5),@dt,120)+'1-1'
--B. 年的最后一天
SELECT CONVERT(char(5),@dt,120)+'12-31'
--2.指定日期所在季度的第一天或最后一天
--A. 季度的第一天
SELECT CON ......
1 :普通SQL语句可以用exec执行
Select * from tableName
exec('select * from tableName')
exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N
2:字段名,表名,数据库名之类作为变量时,必须用动态SQL
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tab ......
1.update a set a.nickname=b.nickname from tab1 a,tab2 b where a.username=b.username
2.Update student_score set
student_score.level=level_about.level from
level_about where student.score
between level_about.start_score and level_about.end_score ......
在我们做数据库程序开发的时候,经常会遇到这种情况:需要将一个数据库服务器中的数据导入到另一个数据库服务器的表中。通常我们会使用这种方法:先把一个数据库中的数据取出来放到某出,然后再把这些数据一条条插入到目的数据库中,这种方法效率较低,写起程序来也很繁琐,容易出错。另外一种方法是使用bcp或BULK IN ......
drop table #Tmp --删除临时表#Tmp
create table #Tmp --创建临时表#Tmp
(
ID int IDENTITY (1,1) not null, --创建列ID,并且每次新增一条记录就会加1
WokNo &nb ......