安全性
2007-08-26 20:59 by Yeemio, 758 visits, 网摘, 收藏, 编辑
学****MSDN的WEBCAST,感觉单纯看一遍意义不大,做个笔记,以备不时只需查找方便。代码部分本人在XP+VS2005+SQL2005测试通过,请大家指教。
安全性,分为七个部分的议程。如下。
•输入安全性
•身份验证
•授权
•模拟
•存储机密
•使用加密
•安全使用最佳实践
首先是输入安全性,讲师讲解了SQL Injection的工作原理,比如说应用中的模型是Query模型是
SELECT COUNT (*) FROM Users WHERE UserName=‘Jeff’AND Password=‘imbatman’。
而恶意者在username对话框填写"'or 1=1--" 这样就达到了一个恶意的Query的目的,语句变成这样:
SELECT COUNT (*) FROM UsersWHERE UserName=‘’ or 1=1-- 从而使password验证实效,也就是可以把password验证给注释掉,从而达到恶意的目的。而且还可以通过SQL注入达到更可怕的目的,举个例子吧,对于这样的查询语句:string strSql = "select UserName,UserPass from tbUserInfo where UserName='"++"' and UserPass='"++"'";可以这样的语句:';insert into tbUserInfo values('张三','111','男',")--来达到写入数据表的目的。
对于这样呢,我们可以通过验证输入来达到防范的目的,1,验证所有的输入:的验证控件,其他情况下使用正则表达式(.,web server 参数)。
2,对于输出的数据要加密。3,使用参数化的存储过程和查询语句。
我们做一个例子来对比下有参数的和无参数的查询语句。首先做页面:放二个TEXTBOX,一个输入用户名,一个输入密码,二个BUTTON一个是普通登录,一个是安全登录。代码如下:
<TABLE id="Table1" style="Z-INDEX: 102; LEFT: 182px; POSITION: absolute; TOP: 121px" cellSpacing="1" cellPadding="1" width="300" border="1">
<TR>
<TD>
<asp:Label id="Label1" runat="server">用户名称:</asp:Label></TD>
<TD>
<asp:TextBox id="tbName" runat="server" Width="183px"></asp:TextBox></TD>
</TR>
<TR>
<TD>
<asp:Label id="Label2" runat="server">密码:</asp:Label></TD>
<TD>
<asp:TextBox id="tbPass" runat="server" Width="183px"></asp:TextBox></TD>
</TR>
</TABLE>
<asp:Button id="btnLoginBetter" style="Z-INDEX: 105; LEFT: 343px; POSITION: absolute; TOP: 226px" runat="server" Width="78px" Text="安全登录" onclick="btnLoginBetter_Click"></asp:Button>
<asp:Label id="lbDiag" style="Z-INDEX: 104; LEFT: 189px; POSITION: absolute; TOP: 343px" runat="server" Width="599px"></asp:Label>
安全性 来自淘豆网www.taodocs.com转载请标明出处.