防Sql注入的兩個簡單解決辦法
第一種方法:
1.所有傳入的Sql參數(shù)統(tǒng)統(tǒng)都用SqlParameter來寫.
第二種方法
1.對所有要傳入的參數(shù)做Sql關(guān)鍵字符過濾.
用法:
string strSql = "select * from UserInfo where UID = {0}";
strSql = FormatSql(strSql,tbUID.Text);
/// <summary>
/// Sql語句過濾處理類
/// </summary>
public static class SqlFilter
{
/// <summary>
/// 過濾Sql注入的字符
/// </summary>
/// <param name="sqlCondition">要過濾的Sql數(shù)據(jù) </param>
/// <returns> </returns>
public static string FilterInjection(string sqlCondition)
{
if (sqlCondition.Trim() != string.Empty)
sqlCondition = sqlCondition.Trim();
sqlCondition = sqlCondition.Replace("''", "");
sqlCondition = sqlCondition.Replace("'", "''");
sqlCondition = sqlCondition.Replace("_", @"\_");
sqlCondition = sqlCondition.Replace("%", @"\%");
return sqlCondition;
}
public static string AddEsCape(string strSql, string sqlCondition)
{
string m_ReturnSql = string.Empty;
if (sqlCondition.Contains(@"\%") || sqlCondition.Contains(@"\_"))
{
m_ReturnSql = string.Format(strSql, sqlCondition) + @" escape '\' ";
}
else
{
m_ReturnSql = string.Format(strSql, sqlCondition);
}
return m_ReturnSql;
}
public static string FormatSql(string strSql, string sqlCondition)
{
string m_Condition = FilterInjection(sqlCondition);
if (string.IsNullOrEmpty(m_Condition))
{
return string.Empty;
}
else
{
return AddEsCape(strSql, m_Condition);
}
}
}
1.所有傳入的Sql參數(shù)統(tǒng)統(tǒng)都用SqlParameter來寫.
第二種方法
1.對所有要傳入的參數(shù)做Sql關(guān)鍵字符過濾.
用法:
string strSql = "select * from UserInfo where UID = {0}";
strSql = FormatSql(strSql,tbUID.Text);
/// <summary>
/// Sql語句過濾處理類
/// </summary>
public static class SqlFilter
{
/// <summary>
/// 過濾Sql注入的字符
/// </summary>
/// <param name="sqlCondition">要過濾的Sql數(shù)據(jù) </param>
/// <returns> </returns>
public static string FilterInjection(string sqlCondition)
{
if (sqlCondition.Trim() != string.Empty)
sqlCondition = sqlCondition.Trim();
sqlCondition = sqlCondition.Replace("''", "");
sqlCondition = sqlCondition.Replace("'", "''");
sqlCondition = sqlCondition.Replace("_", @"\_");
sqlCondition = sqlCondition.Replace("%", @"\%");
return sqlCondition;
}
public static string AddEsCape(string strSql, string sqlCondition)
{
string m_ReturnSql = string.Empty;
if (sqlCondition.Contains(@"\%") || sqlCondition.Contains(@"\_"))
{
m_ReturnSql = string.Format(strSql, sqlCondition) + @" escape '\' ";
}
else
{
m_ReturnSql = string.Format(strSql, sqlCondition);
}
return m_ReturnSql;
}
public static string FormatSql(string strSql, string sqlCondition)
{
string m_Condition = FilterInjection(sqlCondition);
if (string.IsNullOrEmpty(m_Condition))
{
return string.Empty;
}
else
{
return AddEsCape(strSql, m_Condition);
}
}
}
浙公網(wǎng)安備 33010602011771號