using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
namespace Bowin.Common.Security
{
internal class Utils
{
///
/// 该方法用来检测用户输入是否带有恶意
///
/// 用户输入的文字
/// 最大的长度
/// 返回验证后的文字
public static string InputText(string text, int maxlength)
{
text = text.ToLower().Trim();
if (text == null || text.Length == 0)
return string.Empty;
if (text.Length > maxlength)
text = text.Substring(0, maxlength);
text = Regex.Replace(text, "[\\s]{2,{", " ");
text = Regex.Replace(text, "(<[b|B][r|R]/*>)+|(<[p|P](.|\\n)*?>)", "\n"); //
text = Regex.Replace(text, "(\\s*&[n|N][b|B][s|S][p|P];\\s*)+", " "); //
text = Regex.Replace(text, "<(.|\\n)*?>", string.Empty); //any other tags
text = Regex.Replace(text, "=", "");
text = Regex.Replace(text, "%", "");
text = Regex.Replace(text, "'", "");
text = Regex.Replace(text, "select ", "");
text = Regex.Replace(text, "insert ", "");
text = Regex.Replace(text, "delete ", "");
text = Regex.Replace(text, "or ", "");
text = Regex.Replace(text, "-- ", "");
text = Regex.Replace(text, "and ", "");
text = Regex.Replace(text, "where ", "");
text = Regex.Replace(text, "update ", "");
text = Regex.Replace(text, "script ", "");
text = Regex.Replace(text, "iframe ", "");
text = Regex.Replace(text, "master ", "");
text = Regex.Replace(text, "exec ", "");
text = Regex.Replace(text, "<", "");
text = Regex.Replace(text, ">", "");
text = Regex.Replace(text, "\r\n", "");
return text;
}
public static List scriptwords()
{
List lw = new List();
lw.Add("|");
lw.Add("&");
lw.Add(";");
lw.Add("$");
lw.Add("%");
lw.Add("@");
lw.Add(Chr(34));
lw.Add("\'");
lw.Add("\\" + Chr(34));
lw.Add("<");
lw.Add(">");
lw.Add("(");
lw.Add(")");
lw.Add("+");
lw.Add(Chr(13));
lw.Add(Chr(10));
lw.Add(",");
lw.Add("\\");
return lw;
}
public static string Chr(int asciiCode)
{
if (asciiCode >= 0 && asciiCode <= 255)
{
System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
byte[] byteArray = new byte[] { (byte)asciiCode };
string strCharacter = asciiEncoding.GetString(byteArray);
return (strCharacter);
}
else
{
return "";
}
}
public static List sqlwords()
{
List lw = new List();
lw.Add("select ");
lw.Add("insert ");
lw.Add("delete ");
lw.Add("or ");
lw.Add("exec ");
lw.Add("-- ");
lw.Add("and ");
lw.Add("where ");
lw.Add("update ");
lw.Add("master ");
lw.Add("script ");
lw.Add("iframe ");
lw.Add("declare ");
lw.Add("char(");
lw.Add("javascript:");
lw.Add("truncate ");
lw.Add("script>");
lw.Add("/**/");
return lw;
}
///
/// 判断是否包含sql注入关键字
///
///
///
public static bool isSqlWord(string text)
{
bool result = false;
foreach (string w in sqlwords())
{
if (text.ToLower().Contains(w))
{
result = true;
break;
}
}
return result;
}
///
/// 判断是否包含script危险字符
///
///
///
public static bool isscriptword(string text)
{
bool result = false;
foreach (string w in scriptwords())
{
if (text.Contains(w))
{
result = true;
break;
}
}
return result;
}
}
}