void submitBtn_Click(object sender, EventArgs e) { Response.Write(HttpUtility.HtmlEncode(inputTxt.Text)); } </script>
<html xmlns="http://www.w3.org/1999/xhtml" > <body> <form id="form1" runat="server"> <div> <asp:TextBox ID="inputTxt" Runat="server" TextMode="MultiLine" Width="382px" Height="152px"> </asp:TextBox> <asp:Button ID="submitBtn" Runat="server" Text="Submit" OnClick="submitBtn_Click" /> </div> </form> </body> </html>
查看HTML编码的效果,请建立一个虚拟目录将前述的文件放进去,运行此页面,在文本框中输入一些HTML代码,点击提交按钮.例如,下面的输入被当作普通文本来显示.
Run script and say hello <script>alert('hello');</script>
如果你移除调用HtmlEncode方法,简单地输入文本的内容,浏览器会执行代码并弹出一个提示框.
使用UrlEncode 方法对不安全的URL地址进行编码
如果你需要获取有用户输入部分的URL参数,这可能带来一定的安全风险,使用HttpUtility.UrlEncode方法对这个地址字符串编码.
HttpUtility.UrlEncode(urlString);
第四步.对SQL语句使用命令参数方式.
为了避免注入式攻击请使用SQL的参数方式.参数(Parameters)集合提供类型检测和长度检测.如果你使用参数集合,输入的内容将被当作文本值来对待,数据库不会执行包含在其中的代码.使用参数集方式的一个额外的好处是,你可以严格限定输入的类型和长度.如果输入型超出范围将会触发异常.
当调用一个存储过程时使用参数集
下面的代码片段演示了在调用存储过程时使用参数集的例子.
SqlDataAdapter myCommand = new SqlDataAdapter("AuthorLogin", myConnection); myCommand.SelectCommand.CommandType = CommandType.StoredProcedure; SqlParameter parm = myCommand.SelectCommand.Parameters.Add( "@LoginId", SqlDbType.VarChar, 11); parm.Value = Login.Text;
在创建你自己的SQL语句时使用参数集.
如果你不能使用存储过程,你仍然可以使用参数集,请看下面的代码.
SqlDataAdapter myCommand = new SqlDataAdapter(
上一篇:ASP.NET性能最佳实践
下一篇:调用存储过程并且使用返回值的基本方法
|