大家都是如何防止SQL注入式攻击的?
做网站的同志都知道,网站的安全是非常重要的。大家都是如何来防止网站被黑的?
为了防止登录口令被SQL注入攻击,我是将输入的textbox中的文本
如果有“'”的全部替换成“¥”来处理的,不知道大家是怎么做的?
大家交流下。
------解决方案--------------------坐等高手.
------解决方案--------------------1.不要或尽量少拼接sql
2.注意对用户输入的数据进行检查
3.sql参数使用参数化形式(parameter)
------解决方案--------------------危险字符过滤的类(最新完善版) * 山哥的后台类 *
http://blog.csdn.net/johnsuna/archive/2004/12/05/205295.aspx
我看了一下,但是不知道好用吗,
我想做的是在前台作判断,至今还没有找到好的方法。
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------http://blog.csdn.net/dengwei007/articles/30712.aspx 看看这个sql注入天书
------解决方案--------------------做到两点,可保你万无一失
1、对string参数进行Replace("'","''") or Replace("'","")
示例sql语句:string sql = "select * from [users] where [name]='"+ name.Replace("'","") +"'";
注意sql语句中[name]=''两个单引号不可缺
2、对int参数进行int.Parse()
示例sql语句:string sql = "select * from [users] where [id]="+ int.Parse(id).ToString();
出错说名参数不对,跳转到默认错误页面
当然也可以通过含蓄的方式验证,比如 int.TryParse 或者 try{}catch{}
------解决方案--------------------另外,如果考虑插入<script>标签的话,可以在显示的时候进行 Server.HtmlEncode(row["title"].ToString())
------解决方案--------------------
------解决方案--------------------学习
------解决方案--------------------C# code
public class ProcessRequest
{
public static void StartProcessRequest()
{
string sqlErrorPage = "ErrorPage.htm";
try
{
string getkeys = "";
if (System.Web.HttpContext.Current.Request.QueryString != null)
{
for (int i = 0; i < System.Web.HttpContext.Current.Request.QueryString.Count; i++)
{
getkeys = System.Web.HttpContext.Current.Request.QueryString.Keys[i];
if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.QueryString[getkeys]))
{
System.Web.HttpContext.Current.Response.Redirect(sqlErrorPage + "");
System.Web.HttpContext.Current.Response.End();
}
}
}
if (System.Web.HttpContext.Current.Request.Form != null)
{
for (int i = 0; i < System.Web.HttpContext.Current.Request.Form.Count; i++)
{
getkeys = System.Web.HttpContext.Current.Request.Form.Keys[i];
if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.Form[getkeys]))
{
System.Web.HttpContext.Current.Response.Redirect(sqlErrorPage + "");
System.Web.HttpContext.Current.Response.End();
}
}
}
}
catch
{
System.Web.HttpContext.Current.Response.Redirect(sqlErrorPage + "");
System.Web.HttpContext.Current.Response.End();
}
}
public static bool ProcessSqlStr(string Str)
{
bool ReturnValue = true;
try
{
if (Str != "")
{
string SqlStr = ";|and|exec|insert|select|delete|update|count|*|chr|mid|master|truncate|char|declare";
string[] anySqlStr = SqlStr.Split('|');
foreach (string s in anySqlStr)
{
if (Str.IndexOf(s) > -1)
{
ReturnValue = false;
}
}
}
}
catch
{
ReturnValue = false;
}
return ReturnValue;
}
}