服务器死亡日记(应用程序篇)
第二个层面的安全是应用程序的安全。
我们要明白我们安装了哪些应用程序,Ftp、imail、IIS下的应用程序。
我们安装的应用程序必须顺时注意补丁的情况,同有补丁必须及时安装。问题最大的就是我们自己开发的应用程序,我们要用怀疑一切的态度去看带我们的代码。
在网上最最知名的就是SQL注入攻击法。就是在参数后面加一些SQL语句实现对网站的攻击。要防止SQL注入法攻击,首先要求对所有的从客户端转入的参数进行过滤。不论是传入的是数值还是字符串。这是一个C#的实现:
public static string RemoveUnSafeChars(string cString)
{
if(cString==null)
return "";
cString=cString.Trim();
cString=cString.Replace("'","`").Replace("<","<").Replace(">",">").Replace("\n\r","<BR>").Replace("\n","<BR>");
return cString;
}
其他做好服务器的设置工作,
A、不要用sa帐号与SQL服务器相联、或者信任联接,一旦有一个地方的代码没有过滤完全,黑客就会进入你的系统。
B、删除不需要的扩展存贮过程,如Xp_cmdshell等。不仅仅在SQL里面删除,文件一起删除。否则黑客是可以恢复的。
C、对表格的权限要设置好,最好只有读的权限,没有写的权限,所有的写操作都用存贮过程去做。这样代码注入就不能删除你的数据了。
D、数据库系统的补丁必须及时打,如果Web与数据库系统是一个服务器,1433端口不要开放,如果是外部服务,也只对特定的IP开放(在网络策略里设置)。
E、如果条件许可,数据库服务器最好放在内网里面,服务器一般有两张网卡,数据服务器只与WEB用对等网相联。不直接联外部的网络环境。
特殊的文件保护
我们的ASP应用常常包括数据库的联接等配置文件,一定要设置成asp文件,不要让黑客猜出这些文件的文件名,否则,一个http://XXX.XXX.XXX/INC/Conn.inc就获取了你的数据库信息。
SQL注入、文件盗取,这都是最常用的黑客方法。另外我们需要特别关注的地方就是与文件操作相关的程序,如文件上传、文件读的程序。
文件上传:不要相信客户,客户上传的所有东西都可能是攻击性的。首先是上传文件的类型:我们一般是根据ContentType来获取获得的文件类型,但是ContentType是可以欺骗的,客户端可以人为构造文件头,使上传一个asp文件,而ContentType是imgae。其次是对上传文件名的分析,如果特殊的文件也可能使你的程序分析认为一个asp文件是gif或jpg文件。小心上传的html文件,如果是html文件,可能html文件有包含文件,如果上传的html文件包含了你的index.asp,呵呵,你的index.asp可能就被别人一览无遗了,你有这样的代码吗?所以,小心客户上传的文件。
文件读取:有些程序是采用客户端发出参数,服务器asp程序读特定的文件并write到客户端。一般读前会测试是否是要读asp文件,方法是测试扩展名是不是asp,可是在文件名后加一些特定的字符后,所请求的文件扩展名不是asp,但文件IO也能正确读出文件如:Readfiie.asp?filename=ReadFile.asp /。所以小心你对文件的判定,一不小心就被别人利用了。
管好你的密码:有些管理人员的密码真是简单的可爱,用户名admin、密码admin。这样的站点大家都没有什么话可以说,好可爱,好可爱。不要用电话号码、不要用与公司相关的任何东东。