最近做了一个网站,数据库采用SQL2000,也被(<script src=http://3b3.org/c.js></script>)多次注入功击.
估计是数据库密码被人盗了,后来进行了连接串加密,还是被功击,
后来又有DELPHI写DLL文件来加加密连接串,一样被功击。现在用加密文件来保存连接串,并且文件路在传参时已进行加密,解密是用DELPHI写的DLL来处理的,还是被功击,小弟无语了,望高手支招。谢谢!
估计是数据库密码被人盗了,后来进行了连接串加密,还是被功击,
后来又有DELPHI写DLL文件来加加密连接串,一样被功击。现在用加密文件来保存连接串,并且文件路在传参时已进行加密,解密是用DELPHI写的DLL来处理的,还是被功击,小弟无语了,望高手支招。谢谢!
解决方案 »
- 关于System.Timers,没有触发事件?
- GDI+如何绘制圆锥填充效果,求助高手帮忙
- C#2个文本的对比
- 大家知道net advabtage吗?这个工具好学吗?
- 请问哪位高手知道webpart的局部刷新怎样实现
- Repeater控件显示数据相关问题(急)
- 请问,有没有专门介绍WIN C#.NET 控件怎么使用的书,属性啊,方法啊,事件啊,全面一点的啊
- 怎么使用dc_changeb3来修改M1卡密码
- 关于Graphics绘图后如何本地保存问题!
- 将数据倒入到excel后,加上页眉(页眉有图片),我最后的34分全部贡献啊!!!!!帮忙帮忙!!!!
- winform中用鼠标右键点击listview怎么能够知道点的是第几行?
- 如何让一个form窗口一打开就是最大化的,并且把右上角最小化最大化去掉,只留关闭
参数化SQL
http://topic.csdn.net/u/20081205/09/3dd06076-bcbe-45d4-998c-8999fdbe6fae.html?75869
操作数据库用存储过程
void Application_BeginRequest(Object sender, EventArgs e)
{
StartProcessRequest(); }
private void StartProcessRequest()
{
try
{
string getkeys = "";
string sqlErrorPage = "index.aspx";
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 (getkeys == "__VIEWSTATE") continue;
if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.Form[getkeys]))
{
System.Web.HttpContext.Current.Response.Redirect(sqlErrorPage);
System.Web.HttpContext.Current.Response.End();
}
}
}
}
catch
{ }
}
private bool ProcessSqlStr(string Str)
{
bool ReturnValue = true;
try
{
if (Str.Trim() != "")
{
string SqlStr = "exec¦insert¦select¦delete¦master¦update¦truncate¦declare";
string[] anySqlStr = SqlStr.Split('¦');
foreach (string ss in anySqlStr)
{
if(!Str.ToLower().Contains("updatepanel"))
{
if (Str.ToLower().IndexOf(ss) >= 0)
{
ReturnValue = false;
break;
}
}
}
}
}
catch
{
ReturnValue = false;
}
return ReturnValue;
}
把sql放到存储过程
难道就一定要写存储过程来处理吗?