星期零

技术改变生活,分享让我们快乐!
随笔 - 159, 文章 - 0, 评论 - 234, 阅读 - 44万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

(摘抄)数据库使用过程中的五个误区

Posted on   weekzero  阅读(271)  评论(0编辑  收藏  举报

大家存在5点误区: 
    1、sql注入比较难防,需要替换select,delete等一打字符
其实对于字符型替换再多都没有替换单引号为两个单引号来的好!对于数字型替换再多都没有用,一定要类型转换。 
    2、忽略DropDownList传来的东西
其实是不对的,一切客户端的东西都是不可信任的,select下拉框也是!因为可以自己做一个htm提交到服务器。 
    3、access比sqlserver不安全
安全不安全关键看怎么用,如果sqlserver还是像access一样用,一个sa帐户的话,很明显,sqlserver比access不安全,可以直接得到表名和字段名!access反而倒安全点了,因为只能通过逐位猜解得到。 
    4、网站没有显示出错信息就说明网站是安全的
当有记录的时候显示记录,没有记录的时候显示找不到任何记录,通过这两种状态就可以猜解字段名了,所以网页不出错不能说明是安全的 
    5、忽略post提交的信息
很多人对url上传递的东西过滤严格,对于post的东西不理不睬是不对的,post的东西更加容易被注入,因为一般字段比较多

在asp.net中强烈建议通过参数来实现sql而不是sql拼接,因为就算你每一个都过滤百密难有疏
比如:

SqlConnection conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["conn"]); 
SqlCommand comm
=new SqlCommand("update tb1 set vName=@vName,iAge=@iAge where ID=@id",conn); 
SqlParameter parm1
=new SqlParameter("@vName",SqlDbType.NVarChar,50); 
parm1.Value
=((TextBox)e.Item.FindControl("name")).Text; 
SqlParameter parm2
=new SqlParameter("@iAge",SqlDbType.Int); 
parm2.Value
=((TextBox)e.Item.FindControl("age")).Text; 
SqlParameter parm3
=new SqlParameter("@id",SqlDbType.Int); 
parm3.Value
=this.DataGrid1.DataKeys[e.Item.ItemIndex]; 
comm.Parameters.Add(parm1); 
comm.Parameters.Add(parm2); 
comm.Parameters.Add(parm3); 
conn.Open(); 
comm.ExecuteNonQuery(); 
conn.Close(); 


这样的代码看起来舒服而且又安全。

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示