public sealed class SecurityDB
{
#region 判断是否服务器端提交
/// <summary>
/// 判断是否服务器端提交
/// </summary>
/// <returns></returns>
public static bool Judge_ThisSubmit()
{
string text1 = HttpContext.Current.Request.ServerVariables["HTTP_REFERER"];
string text2 = HttpContext.Current.Request.ServerVariables["SERVER_NAME"];
string text3 = string.Empty;
if (text1 != null)
{
text3 = text1.Substring(7, text2.Length);//根据网站地址确定
}
if (text3 != text2)
{
return false;
}
return true;
}
#endregion
#region MD5_ByteEncrypt
/// <summary>
/// 加密处理用户密码
/// </summary>
/// <param name="encryptString">需要加密的字符串</param>
/// <returns>加密后的字符串</returns>
public static string MD5_ByteEncrypt(string encryptString)
{
Byte[] clearBytes = new UnicodeEncoding().GetBytes(encryptString);
Byte[] hashedBytes = ((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(clearBytes);
return BitConverter.ToString(hashedBytes);
}
public static string pwdSecurity(string pwd)
{
return FormsAuthentication.HashPasswordForStoringInConfigFile(pwd, "md5").ToLower();
}
#endregion
#region DES_Encrypt
/// <summary>
/// 加密。注意:sKey输入密码的时候,必须使用英文字符,区分大小写,且字符数量是8个,不能多也不能少,否则出错。
/// </summary>
///<param name="pToEncrypt">加密字符串</param>
///<param name="sKey">密钥</param>
public static string DES_Encrypt(string pToEncrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//把字符串放到byte数组中
//原来使用的UTF8编码,我改成Unicode编码了,不行
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
//byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);
//建立加密对象的密钥和偏移量
//原文使用ASCIIEncoding.ASCII方法的GetBytes方法
//使得输入密码必须输入英文文本
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
//Write the byte array into the crypto stream
//(It will end up in the memory stream)
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Get the data back from the memory stream, and into a string
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
//Format as hex
ret.AppendFormat("{0:X2}", b);
}
return ret.ToString();
}
#endregion
#region DES_Decrypt
/// <summary>
/// 解密。
/// </summary>
/// <param name="pToDecrypt">解密字符串</param>
/// <param name="sKey">密钥</param>
public static string DES_Decrypt(string pToDecrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//Put the input string into the byte array
byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
for (int x = 0; x < pToDecrypt.Length / 2; x++)
{
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}
//建立加密对象的密钥和偏移量,此值重要,不能修改
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
//Flush the data through the crypto stream into the memory stream
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Get the decrypted data back from the memory stream
//建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象
StringBuilder ret = new StringBuilder();
return System.Text.Encoding.Default.GetString(ms.ToArray());
}
#endregion
#region FilterSQL-Html
/// <summary>
/// 过滤SQL/Html
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public static string FilterSQL(string text)
{
string validSql = "";
if (text != null)
{
text = text.Replace(""", """);
//text = text.Replace(";", "'';''");
//text = text.Replace("'", "''");
//text = text.Replace("--", "''--''");
//text = text.Replace("%25", "");
//text = text.Replace("%0a", "");
//text = text.Replace("%22", "");
//text = text.Replace("%27", "");
//text = text.Replace("%5c", "");
//text = text.Replace("%2f", "");
//text = text.Replace("%3c", "");
//text = text.Replace("%3e", "");
//text = text.Replace("%26", "");
text = text.Replace("<", "<");
text = text.Replace(">", ">");
validSql = text;
}
return validSql;
}
public static string FilterTestHtml(string text)
{
string validSql = "";
if (text != null)
{
text = text.Replace(" ", " ");
text = text.Replace("&", "&");
text = text.Replace(" ", "<br>");
//text = text.Replace(" ","<br>");
//text = text.Replace(" ","<br>");
//text = text.Replace(""",""");
//text = text.Replace(";","'';''");
//text = text.Replace("--","''--''");
//text = text.Replace("--","''--''");
//text = text.Replace("<","<");
// = text.Replace(">",">");
validSql = text;
}
return validSql;
}
public static string UnFilterTestHtml(string text)
{
string validSql = "";
if (text != null)
{
text = text.Replace(" ", " ");
text = text.Replace("<br>", " ");
//text = text.Replace(">",">");
validSql = text;
}
return validSql;
}
#region SQL简单过滤
public static string Text_FSQL(string text)
{
string validSql = "";
if (text != null)
{
text = text.Replace("--", "——");
text = text.Replace("'", "‘");
validSql = text;
}
return validSql;
}
#endregion
#endregion
#region MD5加密保存小写
/// <summary>
/// MD5加密 保存
/// </summary>
/// <param name="pwd">用于加密的字段</param>
/// <param name="IFLower">是否转化为小写</param>
/// <returns></returns>
public static string pwdSecurity(string pwd, bool IFLower)
{
if (IFLower)
{
return FormsAuthentication.HashPasswordForStoringInConfigFile(pwd, "md5").ToLower();
}
else
{
return FormsAuthentication.HashPasswordForStoringInConfigFile(pwd, "md5");
}
}
#endregion
}
{
#region 判断是否服务器端提交
/// <summary>
/// 判断是否服务器端提交
/// </summary>
/// <returns></returns>
public static bool Judge_ThisSubmit()
{
string text1 = HttpContext.Current.Request.ServerVariables["HTTP_REFERER"];
string text2 = HttpContext.Current.Request.ServerVariables["SERVER_NAME"];
string text3 = string.Empty;
if (text1 != null)
{
text3 = text1.Substring(7, text2.Length);//根据网站地址确定
}
if (text3 != text2)
{
return false;
}
return true;
}
#endregion
#region MD5_ByteEncrypt
/// <summary>
/// 加密处理用户密码
/// </summary>
/// <param name="encryptString">需要加密的字符串</param>
/// <returns>加密后的字符串</returns>
public static string MD5_ByteEncrypt(string encryptString)
{
Byte[] clearBytes = new UnicodeEncoding().GetBytes(encryptString);
Byte[] hashedBytes = ((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(clearBytes);
return BitConverter.ToString(hashedBytes);
}
public static string pwdSecurity(string pwd)
{
return FormsAuthentication.HashPasswordForStoringInConfigFile(pwd, "md5").ToLower();
}
#endregion
#region DES_Encrypt
/// <summary>
/// 加密。注意:sKey输入密码的时候,必须使用英文字符,区分大小写,且字符数量是8个,不能多也不能少,否则出错。
/// </summary>
///<param name="pToEncrypt">加密字符串</param>
///<param name="sKey">密钥</param>
public static string DES_Encrypt(string pToEncrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//把字符串放到byte数组中
//原来使用的UTF8编码,我改成Unicode编码了,不行
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
//byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);
//建立加密对象的密钥和偏移量
//原文使用ASCIIEncoding.ASCII方法的GetBytes方法
//使得输入密码必须输入英文文本
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
//Write the byte array into the crypto stream
//(It will end up in the memory stream)
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Get the data back from the memory stream, and into a string
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
//Format as hex
ret.AppendFormat("{0:X2}", b);
}
return ret.ToString();
}
#endregion
#region DES_Decrypt
/// <summary>
/// 解密。
/// </summary>
/// <param name="pToDecrypt">解密字符串</param>
/// <param name="sKey">密钥</param>
public static string DES_Decrypt(string pToDecrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
//Put the input string into the byte array
byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
for (int x = 0; x < pToDecrypt.Length / 2; x++)
{
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}
//建立加密对象的密钥和偏移量,此值重要,不能修改
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
//Flush the data through the crypto stream into the memory stream
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
//Get the decrypted data back from the memory stream
//建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象
StringBuilder ret = new StringBuilder();
return System.Text.Encoding.Default.GetString(ms.ToArray());
}
#endregion
#region FilterSQL-Html
/// <summary>
/// 过滤SQL/Html
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public static string FilterSQL(string text)
{
string validSql = "";
if (text != null)
{
text = text.Replace(""", """);
//text = text.Replace(";", "'';''");
//text = text.Replace("'", "''");
//text = text.Replace("--", "''--''");
//text = text.Replace("%25", "");
//text = text.Replace("%0a", "");
//text = text.Replace("%22", "");
//text = text.Replace("%27", "");
//text = text.Replace("%5c", "");
//text = text.Replace("%2f", "");
//text = text.Replace("%3c", "");
//text = text.Replace("%3e", "");
//text = text.Replace("%26", "");
text = text.Replace("<", "<");
text = text.Replace(">", ">");
validSql = text;
}
return validSql;
}
public static string FilterTestHtml(string text)
{
string validSql = "";
if (text != null)
{
text = text.Replace(" ", " ");
text = text.Replace("&", "&");
text = text.Replace(" ", "<br>");
//text = text.Replace(" ","<br>");
//text = text.Replace(" ","<br>");
//text = text.Replace(""",""");
//text = text.Replace(";","'';''");
//text = text.Replace("--","''--''");
//text = text.Replace("--","''--''");
//text = text.Replace("<","<");
// = text.Replace(">",">");
validSql = text;
}
return validSql;
}
public static string UnFilterTestHtml(string text)
{
string validSql = "";
if (text != null)
{
text = text.Replace(" ", " ");
text = text.Replace("<br>", " ");
//text = text.Replace(">",">");
validSql = text;
}
return validSql;
}
#region SQL简单过滤
public static string Text_FSQL(string text)
{
string validSql = "";
if (text != null)
{
text = text.Replace("--", "——");
text = text.Replace("'", "‘");
validSql = text;
}
return validSql;
}
#endregion
#endregion
#region MD5加密保存小写
/// <summary>
/// MD5加密 保存
/// </summary>
/// <param name="pwd">用于加密的字段</param>
/// <param name="IFLower">是否转化为小写</param>
/// <returns></returns>
public static string pwdSecurity(string pwd, bool IFLower)
{
if (IFLower)
{
return FormsAuthentication.HashPasswordForStoringInConfigFile(pwd, "md5").ToLower();
}
else
{
return FormsAuthentication.HashPasswordForStoringInConfigFile(pwd, "md5");
}
}
#endregion
}