知识大全 也谈ASP.NET站点的安全
Posted 系统
篇首语:知识就是力量,时间就是生命。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 也谈ASP.NET站点的安全相关的知识,希望对你有一定的参考价值。
也谈ASP.NET站点的安全 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
如果做一个项目 涉及到一个网站的开发 站点需要大量的数据输入和填写各种的用户资料 一个兄弟对数据输入没有太上心 对输入的数据没有进行必要的处理和过滤 结果系统上线可怕的事情发生了 第一天站点出现了各种各样的错误 站点被数据撑的乱七八糟 HTML的数据把站点搞的面目全非 第二天站点管理员密码被修改 第三天… 日子还在继续…我可怜的兄弟开始焦头烂额一
一次攻击的例子
一般的web系统 包括开发的web系统都涉及到数据输入的功能 数据输入是一个在普通不过的操作 但对于一个黑客或者蓄意要破坏你系统的人来说 小小的数据输入的文本框里面蕴藏着很大的攻击系统的机会 首先也从一个现象谈起 大家在编写系统的时候一般都要涉及到登陆 很多人是按照下面的方法来编写登陆代码的 我们结合sql语句来介绍 (这里涉及的sql语句以sql SERVER为准)
dataaccessb Db=new DataAccessB();
if(db select( select*from admin where name= +Uername Text+ and pwd= +Password Text+ ) Rows Count<= )
response write( <script>alert( 用户名或密码错误 )</script> );
session[ admin ]= ;
else
session[ admin ]= ;
server transfer( manager aspx );
假如是上述的代码 如果侵入者使用一点点非常的技巧就可以轻松的得到一个导致数据库错误判断的sql语句 从而使系统把输入任何数据的人放入系统管理页面
下面来看看到底做了哪些手脚?
攻击者只需要在用户名和密码处输入or = 就可以使得系统得到一个错误的SQL语句 系统得到的错误语句如下:
select*from admin where name= OR = and pwd= OR = 通过这样恒成立的SQL语句就可以得到全部的数据 按照代码的判断 系统将认为有符合要求的数据 从而进入系统管理界面
通过诸如此类的方法侵入者可以在任何一个要输入信息的窗体输入一些非法的数据从而进入需要密码才可以进入的系统 另外还可以通过在比如查询页 通过输入特定的字符得到一些机密的信息 等等
通过上述的介绍 不难看出数据的输入是存在隐患的 如果设计的时候不考虑清楚 将来可是后患的 那如何来安全它们呢?
二 最易上手的三招>>
作为数据输入篇关键是解决数据输入安全性的问题 那么我们如何通过必要的手段来把数据输入这个环节做的尽可能的安全些呢?
. 对数据库角色的管理
我们在使用连接数据库的时候 只要你不是使用指定角色 比如aspnet这个角色访问sql SERVER 或者信任连接 那么都需要在数据库连接字串里面加上一个帐户 一般这个帐户都是SQL SERVER系统内开的一个帐户 在实际的部署过程中很多人都习惯性的把这个帐户的权限设置成系统管理员 或者对好几个库都可以操作的角色 这样带来的危险是一旦此帐号使用的系统被别人注入成功的话 别人将可以对数据库的一个库或者多个库发起攻击 造成难以挽回的损失
建议一个系统一个帐户和权限 权限按照够用就行 越低越安全的准则
. 给系统加数据验证控件
结合上面的例子 其实只要开发的时候给我们的输入文本框简单的加一个验证控件就可以解决问题了
只允许用户输入数字 不能输入字母 比如下面的数据验证验证的方法
<! 要求输入值必须是 之间的数字 >
<asp:rangevalidator MinimumValue=
maximumvalue= Type= Integer >
这里使用了type的属性告诉系统只接受整数类型的数据 另外只能在 之间
另外还有一个办法就是对于综合性的数据殊输入我们可以通过string replace()的方式来过滤掉一些诸如 = LIKE等等的敏感字符 使的输入的非法数据无法正常的被数据库所执行
代码的正确写法
养成一个良好的数据库访问代码的正确写法 将帮助我们减少被数据输入攻击的机会
利用参数的方式来访问操作数据库就是一个比较好的方式 结合前文提到的那个攻击例子 我们完全可以改造一些代码 使的安全性成倍的增加
sqldataadapter Auery_Ad = new SqlDataAdapter( SELECT * FROM admin WHERE name = @user AND pwd=@pass the_connection);
sqlparameter ParamUser = Auery_Ad SelectCommand Parameters Add (>>
@user sqldb varchar );
paramuser value= uername Text;
sqlparameter ParamPwd = Auery_Ad SelectCommand Parameters Add (>>
@ pass SqlDb VarChar );
parampwd value= Password Text;
最后就是要注意一下跨站攻击 跨站攻击目前 FRAMWORK 中也有所完善 一般在传递一些含有脚本字符的数据的时候 系统都会提示 发现潜在的危险脚本 来防止跨站的攻击 但这个方式也会妨碍我们平时的一些正常的操作和效果
在nfig文件里面有如下的配置信息
<! 将validaterequest设为false 这样才能写入格式代码 >
<pages validateRequest= false />
设置为true的话 系统将禁止格式代码数据
三 小结
cha138/Article/program/net/201311/11897相关参考
在ASP.NET中创建安全的web站点[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 以前
在ASP.NET中创建安全的web站点[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 好了
在ASP.NET中创建安全的web站点[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!界面做好
也谈ASP.NET数据库操设计方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在做开发的时候
构建高性能ASP.NET站点 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在用ASPNET开发
ASP.NET站点应该从哪些方面优化 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在用ASPN
ASP.NET站点构建之减少不必要的请求 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 前言本篇
ASP.NET入门教程1.1将要创建的站点 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 
寄宿多个Web站点和ASP.NET应用程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 目标
知识大全 ASP.NET入门教程 2.4 创建站点地图[1]
ASP.NET入门教程2.4创建站点地图[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb