• .net防止数据注入


    把以下代码放入global.asax
            protected void Application_BeginRequest(Object sender, EventArgs e)
            
    {
                StartProcessRequest();
            }
            private void StartProcessRequest()
            
    {
                
    try
                
    {
                    
    string sqlErrorPage = "Error.aspx";//转向的错误提示页面 
                    if (System.Web.HttpContext.Current.Request.QueryString != null)
                    
    {

                        
    string url = Request.Url.ToString();
                        
    if (!ProcessSqlStr(url))
                        
    {
                            Response.Redirect(sqlErrorPage);
                        }


                    }

                    
    if (System.Web.HttpContext.Current.Request.Form != null)
                    
    {
                            System.Collections.Specialized.NameObjectCollectionBase.KeysCollection getkeys 
    = System.Web.HttpContext.Current.Request.Form.Keys;
                        
                            
    for (int j = 0; j < getkeys.Count; j++)
                            
    {
                                
                                
    if (getkeys[j] == "__VIEWSTATE"continue;
                                
    if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.Form[getkeys[j]]))
                                
    {
                                    System.Web.HttpContext.Current.Response.Redirect(sqlErrorPage);
                                    System.Web.HttpContext.Current.Response.End();
                                }


                            }

                    }

                }

                
    catch
                
    {
                    
    // 错误处理: 处理用户提交信息! 
                }

            }

            
    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;
            }
  • 相关阅读:
    常用网络操作命令
    C语言中的位域[转]
    状态机——一种强大的思想利器
    9030PCI CAN驱动开发点滴
    驱动开发中应该注意的事项
    java 从网络Url中下载文件
    windows pyspider 爬虫安装
    java list去重
    Java 文件分块及合并
    工程部署到linux
  • 原文地址:https://www.cnblogs.com/weichuo/p/1205891.html
Copyright © 2020-2023  润新知