asp.net程序防止sql注入源代码
来源:互联网 发布:淘宝卖家怎么做打折 编辑:程序博客网 时间:2024/06/09 23:06
前几天自己维护的网站发现有很多超链接,页面全乱了!查询下数据库几乎所有的表都有这个链接,估计就是sql注入了。网上查询了一下,SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别, 所以目前市面的防火墙都不会对SQL注入发出警报。所以只要过滤下即可!有2种方法:
方法一如下:
在App_Code文件夹中加一个类SqlZr.cs 其内容如下
public class SqlZr{
public SqlZr()
{
// // TODO: 在此处添加构造函数逻辑 //
}
public static string DelSQLStr(string str)
{
if (str == null || str == "")
return "";
str = str.Replace(";", "");
str = str.Replace("'", "");
str = str.Replace("&", "");
str = str.Replace("%20", "");
str = str.Replace("--", "");
str = str.Replace("==", "");
str = str.Replace("<", "");
str = str.Replace(">", "");
str = str.Replace("%", "");
str = str.Replace("+", "");
str = str.Replace("-", "");
str = str.Replace("=", "");
str = str.Replace(",", "");
return str;
}
} 再将所有项目中的Request.QueryString["id"]改为:SqlZr.DelSQLStr(Request.QueryString["id"])即可(推荐)
方法二:
///<summary> ///防止SQL注入 ///</summary>
///<param ></param>
///<param ></param>
void Application_BeginRequest(Object sender, EventArgs e)
{ StartProcessRequest();
}
#region SQL注入式攻击代码分析
///<summary>
///处理用户提交的请求
///</summary>
private void StartProcessRequest()
{
try
{
string getkeys = "";
string sqlErrorPage = "error.aspx";//转向的错误提示页面
if (System.Web.HttpContext.Current.Request.QueryString != null)
{
for (int i = 0; i < System.Web.HttpContext.Current.Request.QueryString.Count; i++)
{
getkeys = System.Web.HttpContext.Current.Request.QueryString.Keys[i];
if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.QueryString[getkeys]))
{
System.Web.HttpContext.Current.Response.Redirect(sqlErrorPage); System.Web.HttpContext.Current.Response.End(); } } } if (System.Web.HttpContext.Current.Request.Form != null) { for (int i = 0; i < System.Web.HttpContext.Current.Request.Form.Count; i++) { getkeys = System.Web.HttpContext.Current.Request.Form.Keys[i]; if (getkeys == "__VIEWSTATE") continue; if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.Form[getkeys])) { System.Web.HttpContext.Current.Response.Redirect(sqlErrorPage); System.Web.HttpContext.Current.Response.End(); } } } } catch { // 错误处理: 处理用户提交信息! } } ///<summary> ///分析用户请求是否正常 ///</summary> ///<param >传入用户提交数据 </param> ///<returns>返回是否含有SQL注入式攻击代码 </returns> private bool ProcessSqlStr(string Str) { bool ReturnValue = true; try { if (Str.Trim() != "") { string SqlStr = "and .exec .insert .select .delete .update .count .* .chr .mid .master .truncate .char .declare"; string[] anySqlStr = SqlStr.Split('.'); foreach (string ss in anySqlStr) { if (Str.ToLower().IndexOf(ss) >= 0) { ReturnValue = false; break; } } } } catch { ReturnValue = false; } return ReturnValue; } #endregion
- asp.net程序防止sql注入源代码
- asp.net程序防止sql注入
- asp.net程序防止sql注入
- asp.net程序防止sql注入
- asp.net防止sql注入
- ASP.NET 防止SQL注入。
- asp.net 防止 sql注入
- .net程序防止sql注入
- asp.net sql防止sql注入
- ASP.NET 防止SQL注入式攻击
- ASP.NET 防止SQL注入式攻击
- asp.net 如何防止Sql注入攻击
- ASP.NET 防止SQL注入的函数
- ASP.NET 防止SQL注入式攻击
- asp.net如何防止SQL注入
- ASP.net防止SQL注入方法
- asp.net 如何防止SQL注入
- ASP.net防止SQL注入方法
- (转)Windows Socket五种I/O模型 代码全攻略
- 菜鸟每天练习 之 99乘法 switch 判断字符
- 类型转换函数
- ANDROID Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER
- 运维人生从今天 开始
- asp.net程序防止sql注入源代码
- Android 对话框【Dialog】去除白色边框代码
- Android命令行手动编译打包详解
- 看斯坦福大学编程方法学的一点小启发
- CHECK BOX 使用
- 获取一个窗口的状态(最小化、最大化)
- 利用spring的poi生成Excel
- iphone
- WCF不得不清楚的概念