WEB SQL注入與XSS跨站請求

       SQL注入、XSS的跨站入侵,已是老的話題,但很多時候前端開發人員一不留神則會忽略了此類安全的過濾。以下通過簡單的代碼示例展示這兩種入侵的全局屏蔽,當然如果你需求對URL中特殊頁面傳輸敏感字符,則可增加頁面配置規則,放行即可。

       考慮到非法請求有兩種:GET方式:Encode之前、Encode之後的URL串,POST方式:表單提交;所有欲全局控制,則可在APP請求生命週期的最前端完成攔截(.NET:httpmodule、httphandler)。對GET請求,Encode前後分別做校驗,對form方式數據,則需要全局遍歷Form數據,本示例僅給出GET方式的Request請求處理。

示例:

            string regexsString = @"\'|;|#|--|<|>|\*|\+|\(|\)|chr(34)|chr(0)|([\s\b+()]+(select|update|insert|delete|declare|@|exec|dbcc|alter|drop|create|backup|if|else|end|and|or|add|set|open|close|use|begin|retun|as|go|exists)[\s\b+]*)";
            string url = HttpContext.Current.Request.RawUrl.ToString();

            bool IsValid = true;
            Regex regex = new Regex(regexsString, RegexOptions.IgnoreCase);
            string decodeUrl = HttpUtility.UrlDecode(url);
            if (regex.IsMatch(url) || regex.IsMatch(decodeUrl))
            {
                IsValid = false;
            }
            if (!IsValid)
            {
                LogHelper.Security("Security:", "非法的SQL注入" + " Ip:" + GlobalItem.GetRequestIP + ", Url:" + url);
                HttpContext.Current.Response.Redirect("ErrorPage.aspx?code=" + ErrorDefine.INVALID_SQL_INJECT);
            }

regexsString 用以配置過濾敏感字符的規則。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章