如何有效的防止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”来登录数据库。这就防止恶意的注入了。
最后希望能和志同道合的开发同志,一起学习,一起分享。谢谢
推荐链接:惠普黑白激光打印机/爱普生针式打印机
相关文档:
1不用在sql语句使用系统默认的保留关键字
2尽量用exists 和 not exists 代替 in 和 not in
这条在sql2005之后,在索引一样,统计信息一样的情况下,exists ,in效果是一样的。
以AdventureWorks数据库为例,查询在H ......
虽然说ASP.NET属于安全性高的脚本语言,但是也经常看到ASP.NET网站由于过滤不严造成注射.由于ASP.NET基本上配合MMSQL数据库架设 如果权限过大的话很容易被攻击. 再者在网络上找不到好的ASP.NET防注射脚本,所以就自己写了个. 在这里共享出来旨在让程序员免除SQL注入的困扰.
我写了两个版本,VB.NET和C#版本方便不同程序间使用 ......
sql server的 money 类型其实就是小数类型 decimal ,我不喜欢用它,因为有一次什么工具生成,发现它自动把money类型转换成了decimal类型了,与其让它转,还不如自己设计数据库时将货币类型字段设置为 decimal 类型不就得了,废那事干嘛! 字节数 长度(小数点前.小数点后) ......
SQL Server数据库中拆分字符串函数的具体方法:
以下为引用的内容:
CREATE FUNCTION uf_StrSplit '1.1.2.50','.'
(@origStr varchar(7000), --待拆分的字符串
@markStr varchar(100)) --拆分标记,如','
RETURNS @splittable table
(
str_id varchar(4000) NOT NULL, --编号ID ......