CSS代码格式化和css在线压缩工具

<script language="JavaScript">
function $()
{
	var elements=new Array();
	for(var i=0;i<arguments.length;i++)
	{
		var element=arguments[i];
		if(typeof element=='string')element=document.getElementById(element);
		if(arguments.length==1)return element;
		elements.push(element);
	}
	return elements;
}

function CSSencode(code)
{
	code=code.replace(/\n/ig,'');
	code=code.replace(/(\s){2,}/ig,'$1');
	code=code.replace(/\t/ig,'');
	code=code.replace(/\n\}/ig,'\}');
	code=code.replace(/\n\{\s/ig,'\{');
	code=code.replace(/(\S)\s*\}/ig,'$1\}');
	code=code.replace(/(\S)\s*\{/ig,'$1\{');
	code=code.replace(/\{\s*(\S)/ig,'\{$1');
	return code;
}

function CSSdecode(code)
{
	code=code.replace(/(\s){2,}/ig,'$1');
	code=code.replace(/(\S)\s*\{/ig,'$1 {');
	code=code.replace(/\*\/(.[^\}\{]*)}/ig,'\*\/\n$1}');
	code=code.replace(/\/\*/ig,'\n\/\*');
	code=code.replace(/;\s*(\S)/ig,';\n\t$1');
	code=code.replace(/\}\s*(\S)/ig,'\}\n$1');
	code=code.replace(/\n\s*\}/ig,'\n\}');
	code=code.replace(/\{\s*(\S)/ig,'\{\n\t$1');
	code=code.replace(/(\S)\s*\*\//ig,'$1\*\/');
	code=code.replace(/\*\/\s*([^\}\{]\S)/ig,'\*\/\n\t$1');
	code=code.replace(/(\S)\}/ig,'$1\n\}');
	code=code.replace(/(\n){2,}/ig,'\n');
	code=code.replace(/:/ig,': ');
	code=code.replace(/  /ig,' ');
	return code;
}
</script>
CSS代码格式化和css在线压缩/*请将CSS代码复制到下面*/<br/><br/>
<textarea id="code" style="width: 100%; height: 300px">
.rss_a:link{color:#99ccff;}
.rss_a:visited{color:#99ccff;}
.rss_a:hover{
	background-color:#e8f3fd;
	text-decoration:none;
	color:#008ed2;
	border:1pxsolid#99ccff;
}
</textarea>
<br />
<input type="button" onClick="$('code').value = CSSdecode($('code').value);" value="格式化" /> |
<input type="button" onClick="$('code').value = CSSencode($('code').value);" value="压缩化" /> |
<input type="button" onClick="window.clipboardData.setData('Text',$('code').value);" value="复制" /> |
<input type="button" onClick="$('code').value = window.clipboardData.getData('Text');" value="粘贴" /> |
<input type="button" onClick="$('code').value = ''" value="清空" />

[转帖]【个人实战,图文】-xp,vista 32位系统完美使用4G内存

【个人实战,图文】-xp,vista 32位系统完美使用4G内存目前微软旗下的所有32位操作系统均不能完全识别4GB容量的内存,无论是Windows XP、Windows 2003还是最新的Windows Vista,这些32位的操作系统都只能够识别2.75GB-3.25GB之间的内存。
现在内存很便宜,很多朋友在购买机器的时候直接将内存升级为4G。
那怎么样使系统无法使用的1G内存发挥作用呢?
答案就是:
使用一些工具,将那1G内存虚拟为一块硬盘,然后可以把系统的临时文件和IE的临时文件放进去。因为那块硬盘实际上还是在内存里,所以读写速度那是相当的快,而且也不会在硬盘上留下垃圾文件,更不会带来很多的磁盘碎片。

这么好的东西,需要什么软件来实现呢?我使用的是RamDisk,从名字就能看出来,这是一个把内存虚拟为硬盘的软件了。

在网上有很多版本的RamDisk下载,我试过一些,有的可以把未使用的内存虚拟为硬盘,而有的只能在使用的内存中划分一块作为硬盘,我们自然希望达到前者的效果。经过反复试验,终于找到了一个能正常工作的RamDisk,在下面的附件里。

如何来使用RamDisk虚拟硬盘呢,请看下文:

首先,需要下载下来RamDisk,然后解压缩

第二,按Ctrl alt delete ,看看现在的内存使用状况,这样方便一会判断是不是使用的高位内存虚拟为硬盘。
如下图,我的系统的可用内存数大约在1.9G

RamDisk1.png (47.59 KB)
2008-8-28 09:49

第三步,vista用户需要在命令行执行以下代码,xp用户跳过
在菜单栏,附件里找到命令提示符,单击右键,选择“以管理员身份运行”
如下图

RamDisk2.png (36.88 KB)
2008-8-28 09:49

打开后,输入:BCDedit /set nx AlwaysOff
然后再输入:BCDedit /set PAE ForceEnable

RamDisk3.png (60.54 KB)
2008-8-28 09:49

第四步,vista用户和xp用户都要执行:
在RamDisk的文件夹里有个叫做ram4g.reg的注册表文件,双击,将它导入系统

第五步,双击RamDisk.exe文件,运行程序(vista用户需要右键,选择“以管理员身份 运行”)

RamDisk4.png (91.87 KB)
2008-8-28 09:49

(点了Install之后如果提示重启,那就重启一下)

这时候,先别忙着点OK,再睁大眼睛确认一下,看看是不是都选择对了。

然后,再ctrl alt del调出任务管理器,放在前面,准备观察虚拟硬盘时内存的变化。

可以点ok了,RamDisk会花费几秒钟的时间来从内存中虚拟一块硬盘出来。
请仔细观察你的已使用内存量以及未使用的内存量。
如果创建完毕后,已使用的内存量增加的部分恰好与你创建的虚拟硬盘容量接近,未使用的内存容量减少了那么多,很遗憾,你没有利用系统未使用的内存虚拟硬盘,肯定是哪里操作出错了,只能重来。

如果内存使用量和未使用量基本没有变化,那我恭喜你,你的4G内存已经完全发挥出作用了!

创建结束的时候可能会提示重新启动计算机。根据我试验的经验,只有提示重启机器才是使用的未识别内存,否则就是从现有系统使用的内存里划分出来的。


RamDisk5.png (42.86 KB)
2008-8-28 09
:49

下面,就需要把一些临时文件夹转移到虚拟硬盘里了。

在“我的电脑”点右键,选择属性。
vista用户是在“计算机”上点右键,选择属性,然后再选择“高级系统设置”

在打开的窗口选择“高级”选项卡,点击“环境变量”按钮


RamDisk6.png (38.13 KB)
2008-8-28 09:49

在打开的窗口修改以下4个环境变量,改成图片显示的值即可(盘符要与你创建的盘符一致)


RamDisk7.png (31.58 KB)
2008-8-28 09:49

你可以自己选择虚拟硬盘下的路径,但是推荐创建在其下的TEMP文件夹下,因为TEMP是它默认就有的文件夹,放在别的地方可能某些软件第一次运行的时候会有错(因为文件夹不存在。我改到别的文件夹下,每次开机瑞星的监控都不能正常打开)

最后,把IE的临时文件夹也扔进来:


RamDisk8.png (75.45 KB)
2008-8-28 09:49

现在,再重启一下机器,让上面的修改都生效。
之后,你的4G内存就充分发挥作用了。

当然,内存没有4G的朋友也可以这么做,给系统提提速,减少些垃圾,但是不要分的这么大,毕竟那样是分出来一些可使用的就少了一些。

无边的select,去掉select的蓝边

有时候觉得xp上select的默认蓝边很难看,使用以下语句可以去掉select的边,其实是把它隐藏了
<span style="border:1px solid #ccc;position:absolute;overflow:hidden">
 <select style="margin:-1px;">
  <option>这个东西看起来更简单</option>
  <option>但是总是要求position:absolute</option>
  <option>还要注意:select & span 要写在一行上</option>
 </select>
</span>
span必须加上position:absolute才行,但好像又不会绝对定位,ie测试通过

点击后直接弹出保存文件的对话框,而不用弹出新窗口

一般的直接下载文件的代码如下:
System.IO.FileInfo file = new System.IO.FileInfo("F:\\mp3\\mp3\\茉莉花.mp3");
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
Response.Charset="GB2312";
Response.ContentEncoding=System.Text.Encoding.UTF8;
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename="+Server.UrlEncode("茉莉花.mp3"));
Response.AddHeader("Content-Length", file.Length.ToString());
Response.WriteFile(file.FullName);
Response.Flush();
Response.End();

另一种对于大文件,我们用上述代码不是较好,因为上述代码是将文件全缓存于服务器后才输出的,如果你的服务器流量大,且文件较大,不建议用以上方法,下面的代码其实就是把文件进行了分隔,慢慢的输出到客户端!
public static bool ResponseFile(HttpRequest _Request,HttpResponse _Response,string _fileName,string _fullPath, long _speed)
  {
   try
   {
    FileStream myFile = new FileStream(_fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
    BinaryReader br = new BinaryReader(myFile);
    try
    {
     _Response.AddHeader("Accept-Ranges", "bytes");
     _Response.Buffer = false;
     long fileLength = myFile.Length;
     long startBytes = 0;
    
     int pack = 10240; //10K bytes
     int sleep = (int)Math.Floor(1000 * pack / _speed) + 1;
     if (_Request.Headers["Range"] != null)
     {
      _Response.StatusCode = 206;
      string[] range = _Request.Headers["Range"].Split(new char[] {‘=’, ‘-’});
      startBytes = Convert.ToInt64(range[1]);
     }
     _Response.AddHeader("Content-Length", (fileLength – startBytes).ToString());
     if (startBytes != 0)
     {
      _Response.AddHeader("Content-Range", string.Format(" bytes {0}-{1}/{2}", startBytes, fileLength-1, fileLength));
     }
     _Response.AddHeader("Connection", "Keep-Alive");
     _Response.ContentType = "application/octet-stream";
     _Response.AddHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(_fileName,System.Text.Encoding.UTF8) );
 
     br.BaseStream.Seek(startBytes, SeekOrigin.Begin);
     int maxCount = (int) Math.Floor((fileLength – startBytes) / pack) + 1;

 

     for (int i = 0; i < maxCount; i++)
     {
      if (_Response.IsClientConnected)
      {
       _Response.BinaryWrite(br.ReadBytes(pack));
       Thread.Sleep(sleep);
      }
      else
      {
       i=maxCount;
      }
     }
     _Response.Flush();
    }
    catch
    {
     return false;
    }
    finally
    {
     br.Close();
     myFile.Close();
    }
   }
   catch
   {
    return false;
   }
   return true;
  }

说明:
 _Response.Flush();把当前缓冲区中的数据输出到客户端

C# 用VB.net 函数库来实现全角与半角转换、简体和繁体转换

        /// 转全角的函数(SBC case)
        ///
        /// 任意字符串
        /// 全角字符串
        ///
        ///全角空格为12288,半角空格为32
        ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
        ///       
        public string ToSBC(string input)
        {
            //半角转全角:
            char[] c=input.ToCharArray();
            for (int i = 0; i < c.Length; i++)
            {
                if (c[i]==32)
                {
                    c[i]=(char)12288;
                    continue;
                }
                if (c[i]<127)
                    c[i]=(char)(c[i]+65248);
            }
            return new string(c);               
        }

        /**////
        /// 转半角的函数(DBC case)
        ///
        /// 任意字符串
        /// 半角字符串
        ///
        ///全角空格为12288,半角空格为32
        ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
        ///
        public string ToDBC(string input)
        {   
            char[] c=input.ToCharArray();
            for (int i = 0; i < c.Length; i++)
            {
                if (c[i]==12288)
                {
                   c[i]= (char)32;
                    continue;
                }
                if (c[i]>65280 && c[i]<65375)
                    c[i]=(char)(c[i]-65248);
            }   
            return new string(c);
        }
2.C#中直接调用VB.NET的函数,兼论半角与全角、简繁体中文互相转化

在C#项目中添加引用Microsoft.VisualBasic.dll, 可以在C#程序中直接使用VB.NET中丰富的函数 
 

 // 命令行编译 : csc /r:Microsoft.VisualBasic.dll Test.cs
 // 如果是用 Visual Studio .NET IDE, 请按以下方法为项目添加引用:
 // 打开[解决方案资源管理器], 右击项目名称, 选择[添加引用],
 // 从列表中选择 Microsoft Visual Basic .NET Runtime 组件.

 using Microsoft.VisualBasic;

class Test
{
  static void Main()
  {
    string s = "空军]";
    System.Console.WriteLine(s);
    s = Strings.StrConv(s, VbStrConv.Wide              , 0); // 半角转全角
    s = Strings.StrConv(s, VbStrConv.TraditionalChinese, 0); // 简体转繁体
    System.Console.WriteLine(s);
    s = Strings.StrConv(s, VbStrConv.ProperCase        , 0); // 首字母大写
    s = Strings.StrConv(s, VbStrConv.Narrow            , 0); // 全角转半角
    s = Strings.StrConv(s, VbStrConv.SimplifiedChinese , 0); // 繁体转简体
    System.Console.WriteLine(s);
  }
}

C# String.Format格式的详细说明,供参考

几种变量格式化的参数说明:

C#格式化数值结果表

字符

说明

示例

输出

C 货币 string.Format(“{0:C3}”, 2) $2.000
D 十进制 string.Format(“{0:D3}”, 2) 002
E 科学计数法 1.20E+001 1.20E+001
G 常规 string.Format(“{0:G}”, 2) 2
N 用分号隔开的数字 string.Format(“{0:N}”, 250000) 250,000.00
X 十六进制 string.Format(“{0:X000}”, 12) C


string.Format(“{0:000.000}”, 12.2) 012.200

Read More »

从数据库中随机取出N条记录的方法,Sql Server和Access中

Sql Server中如下取,很简单,newid()即可
select top N * from TABLE order by newid()

Access中用如下语句虽说可以取到随机的记录,但每次取的都相同,故如下语句用处不大:
select top N * from TABLE order by RND(id)
id一个数字列,最好是主键,其它列也可,如:RND(len(username))

但可以用如下的order by使每次取的记录都不相同:
select top N * from TABLE order by RND(-(随机数-id))
RND()里面必须是负值,随机数可以自己用程序生成,如:
select top 10 * from js_FaceCat a order by Rnd(-("+new System.Random().Next(666666)+"+a.catID))

花了一上午找资料看access如何简单的取随机记录,但没有搞明白为什么要如此,凑合用了。

手机被偷后,让小偷欲哭无泪的高招

       手机被偷后,让小偷欲哭无泪的高招:一定要知道,.所有的手机都有一个惟一的序列号,当你键入*#06#时,你手机屏幕上就会出现个15位的数字,这个数字就是你的手机序列号。请把此号码记下来并保存,当你的手机被盗后就可以将此号码提供给你的服务商,他能将你丢失的手机锁住,即使别人将你原有SIM卡换掉,此手机也不能使用。也许你不会失而复得,但你的手机对他们来讲也没有任何价值。如果每个人都能够知道自己手机惟一的序列号,那么盗窃手机 将变得没有任何意义.就不会有人再偷手机了.将这个信息告诉尽可能多的人,讓这个常识普及,大家丢手机的机会就少的多了!

Sql Server出现“内部错误。文本管理器无法继续执行当前语句”的错误

今天查看服务器事件日志,发现Sql Server出现好多如下错误:
错误: 7102,严重度: 20,状态: 0
SQL Server Internal Error. Text manager cannot continue with current statement.

中文:
错误: 7102,严重度: 20,状态: 0
SQL Server 内部错误。文本管理器无法继续执行当前语句。

这应该是访问网站是出现的错误,但我也无法找到是何原因,百度搜索了一下,发现有文章说是因为没有打sp4补丁的应该,看了一下服务器居然还是sp2的,汗一个,sp4补丁早就放在服务器上了,但一直都没有装上,赶紧装上试试,不知道还会不会出现上面的错误!

ps:今天看了一下,没有这个错误了,为什么以前就没有出现这个错误呢,也是没有打补丁的,想不通!

Server2003 防木马权限设置IIS服务器安全配置

一、系统的安装

1、按照Windows2003安装光盘的提示安装,默认情况下2003没有把IIS6.0安装在系统里面。

2、IIS6.0的安装

开始菜单—>控制面板—>添加或删除程序—>添加/删除Windows组件

应用程序 ———ASP.NET(可选)

|——启用网络 COM+ 访问(必选)

|——Internet 信息服务(IIS)———Internet 信息服务管理器(必选)

|——公用文件(必选)

|——万维网服务———Active Server pages(必选)

|——Internet 数据连接器(可选)

|——WebDAV 发布(可选)

|——万维网服务(必选)

|——在服务器端的包含文件(可选)

然后点击确定—>下一步安装。(具体见本文附件1)

3、系统补丁的更新

点击开始菜单—>所有程序—>Windows Update

按照提示进行补丁的安装。

4、备份系统

用GHOST备份系统。

5、安装常用的软件

例如:杀毒软件、解压缩软件等;安装完毕后,配置杀毒软件,扫描系统漏洞,安装之后用GHOST再次备份系统。

6、先关闭不需要的端口 开启防火墙 导入IPSEC策略

在”网络连接”里,把不需要的协议和服务都删掉,这里只安装了基本的Internet协议(TCP/IP),由于要控制带宽流量服务,额外安装了Qos数据包计划程序。在高级tcp/ip设置里–”NetBIOS”设置”禁用tcp/IP上的NetBIOS(S)”。在高级选项里,使用”Internet连接防火墙”,这是windows 2003 自带的防火墙,在2000系统里没有的功能,虽然没什么功能,但可以屏蔽端口,这样已经基本达到了一个IPSec的功能。

修改3389远程连接端口

修改注册表.

开始–运行–regedit

依次展开 HKEY_LOCAL_MACHINE/SYSTEM/CURRENTCONTROLSET/CONTROL/

TERMINAL SERVER/WDS/RDPWD/TDS/TCP

右边键值中 PortNumber 改为你想用的端口号.注意使用十进制(例 10000 )

HKEY_LOCAL_MACHINE/SYSTEM/CURRENTCONTROLSET/CONTROL/TERMINAL SERVER/

WINSTATIONS/RDP-TCP/

右边键值中 PortNumber 改为你想用的端口号.注意使用十进制(例 10000 )

注意:别忘了在WINDOWS2003自带的防火墙给+上10000端口

修改完毕.重新启动服务器.设置生效.

二、用户安全设置

1、禁用Guest账号

在计算机管理的用户里面把Guest账号禁用。为了保险起见,最好给Guest加一个复杂的密码。你可以打开记事本,在里面输入一串包含特殊字符、数字、字母的长字符串,然后把它作为Guest用户的密码拷进去。

2、限制不必要的用户

去掉所有的Duplicate User用户、测试用户、共享用户等等。用户组策略设置相应权限,并且经常检查系统的用户,删除已经不再使用的用户。这些用户很多时候都是黑客们入侵系统的突破口。

3、把系统Administrator账号改名

大家都知道,Windows 2003 的Administrator用户是不能被停用的,这意味着别人可以一遍又一遍地尝试这个用户的密码。尽量把它伪装成普通用户,比如改成Guesycludx。

4、创建一个陷阱用户

什么是陷阱用户?即创建一个名为“Administrator”的本地用户,把它的权限设置成最低,什么事也干不了的那种,并且加上一个超过10位的超级复杂密码。这样可以让那些 Hacker们忙上一段时间,借此发现它们的入侵企图。

5、把共享文件的权限从Everyone组改成授权用户

任何时候都不要把共享文件的用户设置成“Everyone”组,包括打印共享,默认的属性就是“Everyone”组的,一定不要忘了改。

6、开启用户策略

使用用户策略,分别设置复位用户锁定计数器时间为20分钟,用户锁定时间为20分钟,用户锁定阈值为3次。 (该项为可选)

7、不让系统显示上次登录的用户名

默认情况下,登录对话框中会显示上次登录的用户名。这使得别人可以很容易地得到系统的一些用户名,进而做密码猜测。修改注册表可以不让对话框里显示上次登录的用户名。方法为:打开注册表编辑器并找到注册表“HKLM\Software\Microsoft\Windows T\CurrentVersion\Winlogon\Dont-DisplayLastUserName”,把REG_SZ的键值改成1。

密码安全设置

1、使用安全密码

一些公司的管理员创建账号的时候往往用公司名、计算机名做用户名,然后又把这些用户的密码设置得太简单,比如“welcome”等等。因此,要注意密码的复杂性,还要记住经常改密码。

2、设置屏幕保护密码

这是一个很简单也很有必要的操作。设置屏幕保护密码也是防止内部人员破坏服务器的一个屏障。

3、开启密码策略

注意应用密码策略,如启用密码复杂性要求,设置密码长度最小值为6位 ,设置强制密码历史为5次,时间为42天。

4、考虑使用智能卡来代替密码

对于密码,总是使安全管理员进退两难,密码设置简单容易受到黑客的攻击,密码设置复杂又容易忘记。如果条件允许,用智能卡来代替复杂的密码是一个很好的解决方法。

三、系统权限的设置

1、磁盘权限

系统盘及所有磁盘只给 Administrators 组和 SYSTEM 的完全控制权限

系统盘\Documents and Settings 目录只给 Administrators 组和 SYSTEM 的完全控制权限

系统盘\Documents and Settings\All Users 目录只给 Administrators 组和 SYSTEM 的完全控制权限

系统盘\Windows\System32\cacls.exe、cmd.exe、net.exe、net1.exe、ftp.exe、tftp.exe、telnet.exe 、 netstat.exe、regedit.exe、at.exe、attrib.exe、format.com、del文件只给 Administrators 组和SYSTEM 的完全 控制权限

另将<systemroot>\System32\cmd.exe、format.com、ftp.exe转移到其他目录或更名

Documents and Settings下所有些目录都设置只给adinistrators权限。并且要一个一个目录查看,包括下面的所有子目录。

删除c:\inetpub目录

2、本地安全策略设置

开始菜单—>管理工具—>本地安全策略

A、本地策略——>审核策略

审核策略更改   成功 失败

审核登录事件   成功 失败

审核对象访问      失败

审核过程跟踪   无审核

审核目录服务访问    失败

审核特权使用      失败

审核系统事件   成功 失败

审核账户登录事件 成功 失败

审核账户管理   成功 失败

B、本地策略——>用户权限分配

关闭系统:只有Administrators组、其它全部删除。

通过终端服务允许登陆:只加入Administrators,Remote Desktop Users组,其他全部删除

C、本地策略——>安全选项

交互式登陆:不显示上次的用户名       启用

网络访问:不允许SAM帐户和共享的匿名枚举  启用

网络访问:不允许为网络身份验证储存凭证   启用

网络访问:可匿名访问的共享         全部删除

网络访问:可匿名访问的命          全部删除

网络访问:可远程访问的注册表路径      全部删除

网络访问:可远程访问的注册表路径和子路径  全部删除

帐户:重命名来宾帐户            重命名一个帐户

帐户:重命名系统管理员帐户         重命名一个帐户

3、禁用不必要的服务 开始-运行-services.msc

TCP/IPNetBIOS Helper提供 TCP/IP 服务上的 NetBIOS 和网络上客户端的 NetBIOS 名称解析的支持而使用户能够共享

文件、打印和登录到网络

Server支持此计算机通过网络的文件、打印、和命名管道共享

Computer Browser 维护网络上计算机的最新列表以及提供这个列表

Task scheduler 允许程序在指定时间运行

Messenger 传输客户端和服务器之间的 NET SEND 和 警报器服务消息

Distributed File System: 局域网管理共享文件,不需要可禁用

Distributed linktracking client:用于局域网更新连接信息,不需要可禁用

Error reporting service:禁止发送错误报告

Microsoft Serch:提供快速的单词搜索,不需要可禁用

NTLMSecuritysupportprovide:telnet服务和Microsoft Serch用的,不需要可禁用

PrintSpooler:如果没有打印机可禁用

Remote Registry:禁止远程修改注册表

Remote Desktop Help Session Manager:禁止远程协助

Workstation 关闭的话远程NET命令列不出用户组

以上是在Windows Server 2003 系统上面默认启动的服务中禁用的,默认禁用的服务如没特别需要的话不要启动。

4、修改注册表

修改注册表,让系统更强壮

1、隐藏重要文件/目录可以修改注册表实现完全隐藏

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ Current-Version\Explorer\Advanced\Folder\Hi-dden\SHOWALL”,鼠标右击 “CheckedValue”,选择修改,把数值由1改为0

2、防止SYN洪水攻击

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

新建DWORD值,名为SynAttackProtect,值为2

新建EnablePMTUDiscovery REG_DWORD 0

新建NoNameReleaseOnDemand REG_DWORD 1

新建EnableDeadGWDetect REG_DWORD 0

新建KeepAliveTime REG_DWORD 300,000

新建PerformRouterDiscovery REG_DWORD 0

新建EnableICMPRedirects REG_DWORD 0

3. 禁止响应ICMP路由通告报文

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\interface

新建DWORD值,名为PerformRouterDiscovery 值为0

4. 防止ICMP重定向报文的攻击

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

将EnableICMPRedirects 值设为0

5. 不支持IGMP协议

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

新建DWORD值,名为IGMPLevel 值为0

6、禁止IPC空连接:

cracker可以利用net use命令建立空连接,进而入侵,还有net view,nbtstat这些都是基于空连接的,禁止空连接就好了。

Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous 把这个值改成”1”即可。

7、更改TTL值

cracker可以根据ping回的TTL值来大致判断你的操作系统,如:

TTL=107(WINNT);

TTL=108(win2000);

TTL=127或128(win9x);

TTL=240或241(linux);

TTL=252(solaris);

TTL=240(Irix);

实际上你可以自己改的:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters:DefaultTTL REG_DWORD 0-0xff(0-255 十进制,默认值128)改成一个莫名其妙的数字如258,起码让那些小菜鸟晕上半天,就此放弃入侵你也不一定哦

8. 删除默认共享

有人问过我一开机就共享所有盘,改回来以后,重启又变成了共享是怎么回事,这是2K为管理而设置的默认共享,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters:AutoShareServer类型是REG_DWORD把值改为0即可

9. 禁止建立空连接

默认情况下,任何用户通过通过空连接连上服务器,进而枚举出帐号,猜测密码。我们可以通过修改注册表来禁止建立空连接:

Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous 的值改成”1”即可。

10、建立一个记事本,填上以下代码。保存为*.bat并加到启动项目中

net share c$ /del

net share d$ /del

net share e$ /del

net share f$ /del

net share ipc$ /del

net share admin$ /del

5、IIS站点设置:

1、将IIS目录&数据与系统磁盘分开,保存在专用磁盘空间内。

2、启用父级路径

3、在IIS管理器中删除必须之外的任何没有用到的映射(保留asp等必要映射即可)

4、在IIS中将HTTP404 Object Not Found出错页面通过URL重定向到一个定制HTM文件

5、Web站点权限设定(建议)

读 允许

写 不允许

脚本源访问 不允许

目录浏览 建议关闭

日志访问 建议关闭

索引资源 建议关闭

执行 推荐选择 “仅限于脚本”

6、建议使用W3C扩充日志文件格式,每天记录客户IP地址,用户名,服务器端口,方法,URI字根,HTTP状态,用户代理,而且每天均要审查日志。(最好不要使用缺省的目录,建议更换一个记日志的路径,同时设置日志的访问权限,只允许管理员和system为Full Control)。

7、程序安全:

1) 涉及用户名与口令的程序最好封装在服务器端,尽量少的在ASP文件里出现,涉及到与数据库连接地用户名与口令应给予最小的权限;

2) 需要经过验证的ASP页面,可跟踪上一个页面的文件名,只有从上一页面转进来的会话才能读取这个页面。

3) 防止ASP主页.inc文件泄露问题;

4) 防止UE等编辑器生成some.asp.bak文件泄露问题。

6、IIS权限设置的思路

?要为每个独立的要保护的个体(比如一个网站或者一个虚拟目录)创建一个系统用户,让这个站点在系统中具有惟一的可以设置权限的身份。

?在IIS的【站点属性或者虚拟目录属性→目录安全性→匿名访问和验证控制→编辑→匿名访问→编辑】填写刚刚创建的那个用户名。

?设置所有的分区禁止这个用户访问,而刚才这个站点的主目录对应的那个文件夹设置允许这个用户访问(要去掉继承父权限,并且要加上超管组和SYSTEM组)。

7、卸载最不安全的组件

最简单的办法是直接卸载后删除相应的程序文件。将下面的代码保存为一个.BAT文件,( 以下均以 WIN2000 为例,如果使用2003,则系统文件夹应该是 C:\WINDOWS\ )

regsvr32/u C:\WINDOWS\System32\wshom.ocx

del C:\WINDOWS\System32\wshom.ocx

regsvr32/u C:\WINDOWS\system32\shell32.dll

del C:\WINNT\WINDOWS\shell32.dll

然后运行一下,WScript.Shell, Shell.application, WScript.Network就会被卸载了。可能会提示无法删除文件,不用管它,重启一下服务器,你会发现这三个都提示“×安全”了。