好险啊,幸亏我们做的网站源码还没有完全上传,幸亏现在我们的网站用的数据库还是虚拟的用户,要不然真的无法想象会给我们接手的这个公司带来多大损失;
我仅以受害者的身份向菜鸟同胞们分享一下安全问题,我们晚上刚把自己的网站源码上传至服务器,而后进行数据库,及IIS的配置,首先我们直接用的sa 以及开发测试中惯用的密码:sa123456
(安全隐患1),而后我们的服务器也是超级管理员的administrator(安全隐患2),配置好后就直接发布了,,,
结果可想而知,不到半小时,我们的网站就被攻击了,服务器完全被窃取了,这是多么的可怕,貌似有人一直在监视着我似的,这要一有必要,你手中的东西都是他的,我是怕了,开来安全的确是个大问题;
而后就问了“度娘”,及请教了好多身边的朋友:
解决方法:1,为数据库设置跟自己项目有关的用户,复杂点最好,设置相应的权限;
2,服务器的用户名,及密码也要复杂(自己看着改);
3,在你的项目源码中加入基本的防攻击代码:如防止sql注入
@1如果你的是.net开发的网站,则将防止sql注入语句放入Global.asax文件中
源代码:
//防止Sql注入 第一种(另外一种跳转页面在这里不介绍了)
protected void Application_BeginRequest(Object sender, EventArgs e)
{
//SQL防注入
string Sql_1 = "exec|insert+|select+|delete|update|count|chr|mid|master+|truncate|declare|drop+|drop+table|creat+|creat+table";
string Sql_2 = "exec+|insert+|delete+|update+|count(|count+|chr+|+mid(|+mid+|+master+|truncate+|char+|+char(|declare+|drop+|creat+|drop+table|creat+table";
string[] sql_c = Sql_1.Split('|');
string[] sql_c1 = Sql_2.Split('|');
if (Request.QueryString != null)
{
foreach (string sl in sql_c)
{
if (Request.QueryString.ToString().ToLower().IndexOf(sl.Trim()) >= 0)
{
Response.Write("警告!你的IP已经被记录!");//
Response.Write(sl);
Response.Write(Request.QueryString.ToString());
Response.End();
break;
}
}
}
if (Request.Form.Count > 0)
{
string s1 = Request.ServerVariables["SERVER_NAME"].Trim();//服务器名称
if (Request.ServerVariables["HTTP_REFERER"] != null)
{
string s2 = Request.ServerVariables["HTTP_REFERER"].Trim();//http接收的名称
string s3 = "";
if (s1.Length > (s2.Length - 7))
{
s3 = s2.Substring(7);
}
else
{
s3 = s2.Substring(7, s1.Length);
}
if (s3 != s1)
{
Response.Write("你的IP已被记录!警告!");//
Response.End();
}
}
@2:如果你的是用asp开发的网站(asp已过时,现在很少用):
SQL_injdata =":|;|>|<|--|sp_|xp_|\|dir|cmd|^|(|)|+|$|'|copy|format|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
SQL_inj = split(SQL_Injdata,"|")
If Request.QueryString<>"" Then
For Each SQL_Get In Request.QueryString
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 Then
Response.Write "SQL通用防注入系统"
Response.end
end if
next
Next
End If
If Request.Form<>"" Then
For Each Sql_Post In Request.Form
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then
Response.Write "SQL通用防注入系统"
Response.end
end if
next
next
end if
目前安全问题就只考虑到这些了,希望各位大虾有更好的策略能跟大家分享一下,你安全,我安全,大家才安全。。。和谐社会,讲究和谐!!!