银行:公开打劫的天朝金融业/草泥马勒戈壁的郑州农行

对于刚刚接触自由软件/开源社区的人来说,里面经常出现的几个名词很令人头大,网上搜索这些概念的讲解,都讲得很复杂,至少我个人没有找到很简明的介绍。 终于通过不懈的努力,这几个概念终于大概明白了。肯定会有不少朋友也像我一样,因此,我按照自己的理解,用最简单的话,对这几个概念作一个简介,可能有不 对之处,还请指正。

  1. UNIX说起,它是一个非常老牌、但又影响深远的操作系统,由AT&T公司的贝尔实验室开发。
  2. 当时AT&T公司把该操作系统的源码授权给高校、学术机构做研究或教学之用。因为这个操作系统非常优秀,很多机构都在其源代码基础上做功能扩充改 进,其中以加州大学伯克利分校的改进版最为xx,这个改进版即BSD(Berkeley Software Distribution,伯克利软件套件)。
  3. 由于源码开放性,一些公司也参与到UNIX的开发工作中,这里面最代表性的是IBM、SUN,他们分别开发出了AIX (Advanced Interactive eXecutive)、Solaris(曾用名SunOS),是供各自公司的工作 站、小型机等机器使用(当时还没有微机)。
  4. 之前的unix(包括unix衍生版都是)有一群BSD开发者离开了加州大学后,在BSD基础上搞了一套386BSD,是基于 intelCPU的(这时候便宜的intel芯片已经问世,并获得了一定市场,但intel芯片却没有相应的unix版本)。
  5. AT&X公司意识到了UNIX商业价值,但看到这些商业版本的UNIX感到非常眼红,大概想从中获得利益,于是疯狂的“打关司”,状告他们侵权。 于是UNIX界一片阴云,UNIX的发展也受到很大影响,高校教学用的UNIX也受到一定影响。
  6. 有位教授在业余时间编写了一个简单的unix版本MINIX,意思就是mini版UNIX. 其实是一个兼容UNIX的一套操作系统,他编写时是不看UNIX源码的,而是根据记忆里的UNIX的功能开发。但他确实太忙了,没有精力对这个版本进一步 完善。
  7. AT&T公司的官司还在继续,但UNIX实在太好了,离了它就不能工作。
  8. 70、80年代之际,对软件开发应该是开放还是封闭,有着截然不同的两种观点。“钱门大叔”也正是这时开始发迹的(这里他有一篇关于basic工具的呼 吁),他当然是支持封闭开发了。
  9. GNU大神 Richard Matthew Stallman是“软件专利”的坚决抑制者,他建立了GNU项目,目标是创建一套xx自由的操作系统,当然是UNIX兼容的。为了保证自由软件的成果不被封闭软件的开发盗用,他起草了一个许可协议GNU General Public License,简称GPL
  10. Stallman本人做了不懈努力,完成了相当大的一部分工作,但还差一个操作系统内核,他的构想是编写一个非常超前的先进的内核,但需求太复杂了,从而进展缓慢
  11. 正好这时荷兰的大学生linus基于intel i386编写了一个操作系统内核linux,在一定程度上参考了MINIX。在stallman的鼓动下,linus以GPL作为授权协议发布了linux.于是一个完整的操作系统就诞生了,就是GNU/Linux。
  12. 另外有一BSD群开发人员在386BSD的基础上搞起了UNIX,这里面有freeBSD, netBSD, openBSD. 通常认为freeBSD是最纯正的UNIX(但它其实也不是UNIX的嫡系)。
  13. AT&T的UNIX后来被卖了,而且经几家公司多次转手,结果从这个世界上淡出了,UNIX官司也就不了了之了。

————-

详细信息参看以下:

http://www.page99.net/tn/archives/726

http://www.page99.net/tn/archives/722

了解更多信息,可以观看记录片《操作系统革命》(Revolution OS)2001年摄制,另有维基百科里相关词条。

NAT是网络地址翻译就是把公网IP翻译成私有地址, 又叫端口映射或端口转发. 采用路由方式是指ADSL拥有一个动态或固定的公网IP,ADSL直接接在HUB或交换机上,所有的电脑共享上网。这时ADSL的外部地址只有一个,比如 61.177.*.*。 而内部的IP是人为设置的,比如ADSL设为192.168.0.1,下面的电脑就依次设为192.168.0.*(*表示1,2,3,…)。
如何实现NAT功能呢?一般路由器中有个虚拟服务器的设置。针对邮件服务器要做如下设置: 进入“虚拟服务器”,在端口填入 25, 协议中选择: TCP, IP地址:192.168.16.x(安装邮件服务器电脑的局域网IP地址), 同样方法设置110(pop3),6080(webmail)端口
另一种方法就是开放主机。开放主机(DMZ Host)是针对IP地址,取消防火墙的功能,将该局域网的IP地址直接映射到外部IP之上,采用开放主机(DMZ)的方式,不必管端口是多少。这种方式 只支持一台内部电脑。

几款ADSL Modem的端口映射做法
以在内部pc 192.168.1.2 上架设 mail server 为例,mail server 的 SMTP 默认端口是25.

阿尔卡特 SpeedTouch HomePlus511 中设置端口映射
进入ADSL的Web设置页面, 在左边的菜单中点“Advanced”/”NAT”
进入NAT的设置界面后,点右边的New创建新的端口映射
Protocol选Tcp,Inside IP填192.168.1.2,Outside IP填0.0.0.0
Inside Port和Outside IP都填成 25
按Apply确认。
设置的 25 端口映射就出现在NAPT Settings下方。
点左上角的Save All保存设置,否则Modem的NAT会自动清空,还要再进行设置。

阿尔卡特Speed Touch 515 设置端口映射
先进入Modem的Web设置页面。
打开左边的“Configuration”菜单,点击“Security”项。
点击右下方格中的“Configure NAT to internal interfaces”。
点击中间的“Configure Global Address Pools and Reserved Mappings”。
点击第四项“Add Reserved Mappings”
“Global IP Address”(公网IP)填上“0.0.0.0”。
“internal IP Address”(内网IP)填上你的PC内网IP(192.168.1.2)
“Transport”(网络协议)选“TCP”。
“Port Number”(端口)填上 smtp 的端口(25)。
点击“Apply”保存数据。
点击左边菜单中的“Save Config”保存设置。

华硕6000EV/6005HW ADSL MODEM中设置端口映射
在主菜单中点“NAT”,会有个“nat channel list”,设置如下:
在nat channel list里面的mupltiple port forwarding里面填写以下内容:
action: add
channel no:1
protocol:tcp
incoming port, begin:25, end :25
new port begin:25,end :25
new ip address:192.168.1.2
保存设置

LINKSYS ADSL路由器中中设置端口映射
在主菜单中点“advanced”,接下来的菜单中有个“forwarding”,设置如下:
extport: 25 to 25
ip address:192.168.1.2
然后点击“apply”就可以了。

宽频蓝色小精灵路由器中设置端口映射
在高级设置页面下点“Distributed Servers Setup(Virtual Serves,虚拟主机设置)”
每个Virtual Server 定义为一个Service Port,所有对这个端口的访问都会重定向到相应的Service
IP 所对应的计算机。
Service Service Port Service IP Enable
Email 25 192.168.1.2 √

IM 701G 艾玛白色 ADSL Modem 设置端口映射
进入ADSL设置,—-安全设置—-NAT的高级配置…—-增加Reserved Mapping…
增加25 端口映射,
如下所示:
Global IP地址 内部的IP地址 传输类型 端口号
和接口地址相同 192.168.1.2 tcp ??????25
保存—-重启设备

合勤642 Adsl Modem设置端口映射
在运行里或MSdos窗口里输入 telnet 192.168.1.1, 输入密码(缺省值为1234)后即可进入ZyNOS系统
进入Menu 11.1 – Remote Node Profile
将 Edit Filter Sets= No 用空格键改为YES后,进入Menu 11.5 – Remote Node Filter菜单
将protocol filters=6 用空格键去掉后回车存盘返回后 Edit Filter Sets= No 不要管它,回车存盘
在Mail Menu 设置15. SUA Server Setup
Port # IP Address
—— —————
1.25 192.168.1.2
回车存盘

实达 ADSL 2110EH 设置端口映射
在IE中用http://192.168.10.1进入 实达ADSL2110EH ROUTER 管理配置页面
选择Services——NAT Rule Configuration——NAT——NAT Options:NAT Rule Entry——Add——进入端口映射添加设置页面
SMTP 端口映射设置参数如下:
Rule ID:  2
Rule Flavor:  RDR
IF Name:  ALL
Protocol:  ANY
Local Address From:  192.168.1.2 (内网IP)
Local Address To:  192.168.1.2 (内网IP)
Global Address From:  0.0.0.0
Global Address To:  0.0.0.0
Destination Port From: 25
Destination Port To:  25
Local Port:  25
设置完后,选择 Submit 提交
选择Admin——Commit & Reboot——重启Modem。

全创1100白色 ADSL MODEM中设置端口映射
IE地址栏里输入 http://192.168.0.2/doc/setvs.htm
一般默认的是用户:admin密码:12345678(或者123456)
进入虚拟服务器设置
“公共端口”、“私有端口”都填上要做的端口(25)
“端口类型”选“TCP”。
“主机IP地址”填自己PC的内网IP (192.168.1.2)。然后按一下“添加此设置”。
IE地址栏里输入 192.168.0.2 进入主界面,点击“保存设置”,ADSL会重启

大亚DB108和102设置端口映射
IE地址栏里输入 http://192.168.1.1/doc/index1.htm
进入虚拟服务器设置
添加内网IP, 端口为25
提交保存

使用phpmyadmin导入数据到数据库服务器上,文件比较大,30多M,导入了老半天,发现一个错误提示:

Script timeout passed, if you want to finish import, please resubmit same file and import will resume.

脚本超时,提示消息里说再次导入同一个文件,导入可以继续进行,试试,又导了老半天,终于完了,是导入成功的消息,查看一下导入的数据,正确的。

看这行提示消息,怀疑是不是php还可以有断点上传的功能,google一下,好像没有相关的资料,有不少人也在提这样的问题,只是没有谁拿解决方案,有人直接回复说“不可能!”,但这个导入确确实实是两次导入并成功导入的。

google这条消息,英文文章很多,没有怎么看,鸟语没学好,看起来太累;只是也好像没有说具体怎么断点续传的。

应该来说,断点续传功能需要服务器端与客户端协同工作才可能的,目前浏览器好像还没听说有这个功能的。

再仔细审视这个导入过程,phpmyadmin提示出现时,页面下面还有提示,说再次导入时会从某一个位置继续。而且这个错误不是跟一般的脚本超时时的显示那样(php错误),而是phpmyadmin的提示,也就是说,php脚本执行是正常的,但错误是出现在sql导入过程中。

怀疑是这样的:这里其实不是断点续传功能,而仅仅是分两次执行的一大段sql导入命令。

MG2:大名鼎鼎的老牌相册,支持批量上传,目录只读,无需数据库 官方:

4images: 免费程序,{zx1}版是1.7.1,有简体中文版(比如中文思诺工作室版)下载,官方

Albinator:商业程序,{zx1}版Albinator Pro 2.0.8。可以和vbulletin, phpbb, IPB, postnuke, phpnuke等集成, 官方:

Comdev Photo Gallery:商业,{zx1}版 3.1,批量上传,多用户,多语言,多风格。官方:

Coppermine Photo:免费程序,{zx1}版 CPG1.4.2。功能比较全面的免费PHP图片程序。FTP批量上传图片,然后后台批量导入数据库并生成缩略图。几乎可以和PHPBB,IPB整合的天衣无缝。官方:

Dalbum: 免费,{zx1}版Dalbum 1.41,目录直读,xx整合phpbb等,官方:

Gallery:免费,{zx1}版gallery2.0.2。国外大部分cms里集成这个图片程序,有简体中文包。官方:

ImageVue:商业程序,{zx1}版 imageVue16.1:

Lightbox Photo Gallery: 商业程序,{zx1}版3.44, 可以加水印。 官方:

PhotoFrame 6.9:免费不过n久没有更新:

PhotoPost Pro:商业程序,{zx1}版PhotoPost 5.2.1 (xx版本站有下载).可以和大部分主流程序(vBulletin, UBB, phpBB, IPB, PHPNuke等)xx整合:

PhotoStore: 分别有免费和商业版。官方:

PHPhotoalbum:免费:

PHPSlideShow :免费,{zx1}版0.9.2,支持RSS:

PhpWebGallery:免费程序,Last release 1.5.0, 有汉化版。官方:

Pigalle:免费,

Simple Picture Gallery:免费。{zx1}版 SPGM 1.4.3,支持XHTML。

singapore:GPL免费:

Snipe Gallery:免费,{zx1}版3.1.4。也支持RSS聚合。官方:

Yapig – Yet Another PHP Image Gallery :免费,支持中文:

还有Simple gallery( 等等。。。

Apache rewrite规则 1、Rewrite规则简介: Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式。如果要想用到rewrite模块,必须先安装或加载rewrite模块。方法有两种一种是编译

Apache rewrite规则
1、Rewrite规则简介:
Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的 (.htaccess)两种方式。如果要想用到rewrite模块,必须先安装或加载rewrite模块。方法有两种一种是编译apache的时候就直接安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块。
基于服务器级的(httpd.conf)有两种方法,一种是在httpd.conf的全局下直接利用RewriteEngine on来打开rewrite功能;另一种是在局部里利用RewriteEngine on来打开rewrite功能,下面将会举例说明,需要注意的是,必须在每个virtualhost里用RewriteEngine on来打开rewrite功能。否则virtualhost里没有RewriteEngine on它里面的规则也不会生效。
基于目录级的(.htaccess),要注意一点那就是必须打开此目录的FollowSymLinks属性且在.htaccess里要声明 RewriteEngine on。

2、举例说明:
下面是在一个虚拟主机里定义的规则。功能是把client请求的主机前缀不是www.colorme.com和 203.81.23.202都跳转到主机前缀为http://www.page99.net,避免当用户在地址栏写入http://page99.net时不能以会员方式登录网站。
NameVirtualHost 192.168.100.8:80
<VirtualHost 192.168.100.8:80>
ServerAdmin webmaster@page99.net
DocumentRoot “/web/webapp”
ServerName www.page99.net
ServerName page99.net
RewriteEngine on? #打开rewirte功能
RewriteCond %{HTTP_HOST} !^www.page99.net [NC] #声明Client请求的主机中前缀不是www.page99.net,[NC]的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^203.81.23.202 [NC]? #声明Client请求的主机中前缀不是203.81.23.202,[NC]的意思是忽略大小写
RewriteCond %{HTTP_HOST} !^$? #声明Client请求的主机中前缀不为空,[NC]的意思是忽略大小写
RewriteRule ^/(.*) http://www.page99.net/ [L] #含义是如果Client请求的主机中的前缀符合上述条件,则直接进行跳转到http://www.page99.net/, [L]意味着立即停止重写操作,并不再应用其他重写规则。这里的.*是指匹配所有URL中不包含换行字符,()括号的功能是把所有的字符做一个标记,以便于后面的应用.就是引用前面里的(.*)字符。
</VirtualHost>

例二.将输入 folio.page99.net 的域名时跳转到profile.page99.net
listen 8080
NameVirtualHost 10.122.89.106:8080
<VirtualHost 10.122.89.106:8080>
ServerAdmin webmaster@page99.net
DocumentRoot “/usr/local/www/apache22/data1/”
ServerName profile.page99.net
RewriteEngine on
RewriteCond %{HTTP_HOST} ^folio.page99.net [NC]
RewriteRule ^/(.*) http://profile.page99.net/ [L]
</VirtualHost>

例三.赛卡软件近期更换了域名,新域名为www.sicasoft.com, 更加简短好记。这时需要将原来的域名ss.kiya.cn, 以及论坛所在地址bbs.page99.net/定向到新的域名,以便用户可以找到,并且使原来的论坛 URL 继续有效而不出现 404 未找到,比如原来的http://bbs.page99.net/tread-60.html, 让它在新的域名下继续有效,点击后转发到http://bbs.sicasoft.com/tread-60.html,而其他网页,如原先的http://ss.kiya.cn/purchase不会到二级域名bbs.sicasoft.com/purchase上,而是到www.sicasoft.com/purchase
按照这样的要求重定向规则应该这样写:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/bbs/
RewriteRule ^bbs/(.*) http://bbs.sicasoft.com/$1 [R=permanent,L]
RewriteCond %{REQUEST_URI} !^/bbs/
RewriteRule ^(.*) http://www.sicasoft.com/$1 [R=permanent,L]

3.Apache mod_rewrite规则重写的标志一览
1) R[=code](force redirect) 强制外部重定向
强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。
2) F(force URL to be forbidden)禁用URL,返回403HTTP状态码。
3) G(force URL to be gone) 强制URL为GONE,返回410HTTP状态码。
4) P(force proxy) 强制使用代理转发。
5) L(last rule) 表明当前规则是{zh1}一条规则,停止分析以后规则的重写。
6) N(next round) 重新从{dy}条规则开始运行重写过程。
7) C(chained with next rule) 与下一条规则关联
如果规则匹配则正常处理,该标志无效,如果不匹配,那么下面所有关联的规则都跳过。
8) T=MIME-type(force MIME type) 强制MIME类型
9) NS (used only if no internal sub-request) 只用于不是内部子请求
10) NC(no case) 不区分大小写
11) QSA(query string append) 追加请求字符串
12) NE(no URI escaping of output) 不在输出转义特殊字符
例如:RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE] 将能正确的将/foo/zoo转换成/bar?arg=P1=zed
13) PT(pass through to next handler) 传递给下一个处理
例如:
RewriteRule ^/abc(.*) /def$1 [PT] # 将会交给/def规则处理
Alias /def /ghi
14) S=num(skip next rule(s)) 跳过num条规则
15) E=VAR:VAL(set environment variable) 设置环境变量

4.
Apache rewrite例子集合
在 httpd 中将一个域名转发到另一个域名
虚拟主机世界近期更换了域名,新域名为 www.wbhw.com, 更加简短好记。这时需要将原来的域名 webhosting-world.com, 以及论坛所在地址 webhosting-world.com/forums/ 定向到新的域名,以便用户可以找到,并且使原来的论坛 URL 继续有效而不出现 404 未找到,比如原来的 http://www. webhosting-world.com/forums/-f60.html, 让它在新的域名下继续有效,点击后转发到 http://bbs.wbhw.com/-f60.html, 这就需要用 apache 的 Mod_rewrite 功能来实现。

在< virtualhost> 中添加下面的重定向规则:

RewriteEngine On
# Redirect webhosting-world.com/forums to bbs.wbhw.com
RewriteCond %{REQUEST_URI} ^/forums/
RewriteRule /forums/(.*) http://bbs.wbhw.com/$1 [R=permanent,L]

# Redirect webhosting-world.com to wbhw.com
RewriteCond %{REQUEST_URI} !^/forums/
RewriteRule /(.*) http://www.wbhw.com/$1 [R=permanent,L]

添加了上面的规则以后, 里的全部内容如下:
< virtualhost *:80>
ServerAlias webhosting-world.com
ServerAdmin admin@webhosting-world.com
DocumentRoot /path/to/webhosting-world/root
ServerName www.webhosting-world.com

RewriteEngine On
# Redirect webhosting-world.com/forums to bbs.wbhw.com
RewriteCond %{REQUEST_URI} ^/forums/
RewriteRule /forums/(.*) http://bbs.wbhw.com/$1 [R=permanent,L]

# Redirect webhosting-world.com to wbhw.com
RewriteCond %{REQUEST_URI} !^/forums/
RewriteRule /(.*) http://www.wbhw.com/$1 [R=permanent,L]
< /virtualhost>

URL重定向例子一:
1.http://www.zzz.com/xxx.php-> http://www.zzz.com/xxx/
2.http://yyy.zzz.com-> http://www.zzz.com/user.php?username=yyy 的功能

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.zzz.com
RewriteCond %{REQUEST_URI} !^user\.php$
RewriteCond %{REQUEST_URI} \.php$
RewriteRule (.*)\.php$ http://www.zzz.com/$1/ [R]

RewriteCond %{HTTP_HOST} !^www.zzz.com
RewriteRule ^(.+) %{HTTP_HOST} [C]
RewriteRule ^([^\.]+)\.zzz\.com http://www.zzz.com/user.php?username=$1

例子二:
/type.php?typeid=* –> /type*.html
/type.php?typeid=*&page=* –> /type*page*.html

RewriteRule ^/type([0-9]+).html$ /type.php?typeid=$1 [PT]
RewriteRule ^/type([0-9]+)page([0-9]+).html$ /type.php?typeid=$1&page=$2 [PT]

5.使用Apache的URL Rewrite配置多用户虚拟服务器
要实现这个功能,首先要在DNS服务器上打开域名的泛域名解析(自己做或者找域名服务商做)。比如,我就把 *.page99.net和 *.semcase.cn全部解析到了我的这台Linux Server上。

然后,看一下我的Apache中关于*.page99.net的虚拟主机的设定。

#*.com,*.osall.net
<VirtualHost *:80>
ServerAdmin webmaster@page99.net
DocumentRoot /home/www/www.page99.net
ServerName dns.page99.net
ServerAlias dns.page99.net page99.net semcase.net *.page99.net *.semcase.net
CustomLog /var/log/httpd/osa/access_log.log” common
ErrorLog /var/log/httpd/osa/error_log.log”
<Directory /home/www/www.page99.net>
AllowOverride None
Order deny,allow
#AddDefaultCharset GB2312
</Directory>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[^.]+\.osall\.(com|net)$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+)\.osall\.(com|net)(.*)$ /home/www/www.page99.net/sylvan$3?un=$1&%{QUERY_STRING} [L] </IfModule>
</VirtualHost>

在这段设定中,我把*.semcase.net和*.page99.net 的Document Root都设定到了 /home/www/www.page99.net
但是,继续看下去,看到<IfModule mod_rewrite.c>…</IfModule>配置了吗?在这里我就配置了URL Rewrite规则。

RewriteEngine on #打开URL Rewrite功能
RewriteCond %{HTTP_HOST} ^[^.]+.osall.(com|net)$ #匹配条件,如果用户输入的URL中主机名是类似 xxxx.page99.net 或者 xxxx.semcase.cn 就执行下面一句
RewriteRule ^(.+) %{HTTP_HOST}$1 [C] #把用户输入完整的地址(GET方式的参数除外)作为参数传给下一个规则,[C]是Chain串联下一个规则的意思
RewriteRule ^([^.]+).osall.(com|net)(.*)$ /home/www/dev.page99.net/sylvan$3?un=$1&%{QUERY_STRING} [L] # 最关键的是这一句,使用证则表达式解析用户输入的URL地址,把主机名中的用户名信息作为名为un的参数传给 /home/www/dev.page99.net目录下的脚本,并在后面跟上用户输入的GET方式的传入参数。并指明这是{zh1}一条规则([L]规则)。注意,在这一句中指明的重写后的地址用的是服务器上的{jd1}路径,这是内部跳转。如果使用http://xxxx这样的URL格式,则被称为外部跳转。使用外部跳转的话,浏览着的浏览器中的URL地址会改变成新的地址,而使用内部跳转则浏览器中的地址不发生改变,看上去更像实际的二级域名虚拟服务器。

这样设置后,重起Apache服务器,测试一下,就大功告成了!

求Rewrite 防盗链正则
不允许www.im286.com www.chinaz.com 这两个网站盗链 , 其它的网站都可以盗链的规则怎么写.

论坛中的答案是:
RewriteEngine On
RewriteCond %{HTTP_REFERER} chinaz.com [NC]
RewriteCond %{HTTP_REFERER} im286.com [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|rar|zip|txt|ace|torrent|gz|swf)$ http://www.xxx.com/fuck.png [R,NC,L]

一、关于是否需要使用xx转义,比如在 RewriteCond %{HTTP_REFERER} chinaz.com [NC] 中把 chinaz.com 改成 chinaz\.com
答案是,两者都是可以的。

二、今天在做 YOURcaddy.com (就是我去年做的PlanetCoachella的变形)的时候,在 GoDaddy 主机上无法正常转向,后来找到了问题:
在HostMonster以及我自己的机器上,是用
RewriteRule ^business/([^\.]+)$ biz/detail.php?name=$1 [L]
达到改写的。而在Godaddy主机上,是这样:
RewriteRule ^business/([^\.]+)$ /biz/detail.php?name=$1 [L]
目标文件前多了一个/
现在想想,可能是因为没有指定RewriteBase,至于到底是不是我改日再验证一下。

三、添加两个关于判断 USER AGENT 例子和自动添加.php扩展名及自动换.html到.php扩展名的例子:
1

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^MSIE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Opera [NC]
RewriteRule ^.* – [F,L] 这里”-”表示没有替换,浏览器为IE和Opera的访客将被禁止访问。

2

RewriteEngine On
RewriteBase /test
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ([^/]+)$ /test/$1.php
#for example: /test/admin => /test/admin.php
RewriteRule ([^/]+)\.html$ /test/$1.php [L]
#for example: /test/admin.html => /test/admin.php

限制目录只能显示图片
< IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !^.*\.(gif|jpg|jpeg|png|swf)$
RewriteRule .*$ – [F,L]
< /IfModule>

补充,关于特定文件扩展名的重写。

重写有某些扩展名的文件:
RewriteRule (.*.css$|.*.js$) gzip.php?$1 [L]
如果要排除一些扩展名:
RewriteRule !\.(js|ico|gif|jpg|JPG|png|PNG|css|pdf|swf)$ index.php

1、如果一个方法能被静态,那就声明他为静态的,速度可提高1/4;

2、echo的效率高于print,因为echo没有返回值,print返回一个整型;

3、在循环之前设置循环的{zd0}次数,而非在在循环中;

4、销毁变量去释放内存,特别是大的数组;

5、避免使用像__get, __set, __autoload等魔术方法;

6、requiere_once()比较耗资源;

7、在includes和requires中使用{jd1}路径,这样在分析路径花的时间更少;

8、如果你需要得sexinsex到脚本执行时的时间,$_SERVER['REQUSET_TIME']优于time();

9、能使用字符处理函数的,尽量用他们,因为效率高于正则;

10、str_replace字符替换比正则替换preg_replace快,但strtr比str_replace又快1/4;

11、如果一个函数既能接受数组又能接受简单字符做为参数,例如字符替换,并且参数列表不是太长,可以考虑多用一些简洁的替换语句,一次只替换一个 字符,而不是接受数组做为查找和替换参数。大事化小,1+1>2;

12、用@掩盖错误会降低脚本运行速度;

13、$row['id']比$row[id]速度快7倍,建议养成数组键加引号的习惯;

14、错误信息很有用;

15、在循环里别用函数,例如For($x=0; $x < count($array); $x), count()函数在外面先计算;

16、在方法里建立局部变量速度最快,几乎和在方法里调用局部变量一样快;

17、建立一个全局变量要比局部变量要慢2倍;

18、建立一个对象属性(类里面的变量)例如($this->prop++)比局部变量要慢3倍;

19、建立一个未声明的局部变量要比一个初始化的局部变量慢9-10倍;

20、声明一个未被任何一个函数使用过的全局变量也会使性能降低(和声明相同数量的局部变量一样),PHP可能去检查这个全局变量是否存在;

21、方法的性能和在一个类里面定义的方法的数目没有关系,因为我添加10个或多个方法到测试的类里面(这些方法在测试方法的前后)后性能没什么差 异;

22、在子类里方法的性能优于在基类中;

23、只调用一个参数并且函数体为空的函数运行花费的时间等于7-8次$localvar++运算,而一个类似的方法(类里的函数)运行等于大约 15次$localvar++运算;

24、Surrounding your string by ‘ instead of ” will make things interpret a little faster since php looks for variables inside “…” but not inside ‘…’. Of course you can only do this when you don’t need to have variables in the string.

25、当输出字符串时用逗号代替点分割更快些。注意:这只对echo起作用,这个函数能接受一些字符串作为参数;

26、在apache服务器里一个php脚本页面比相应的HTML静态页面生成至少要多花2-10倍的时间,建议多用些静态HTML页面和少量的脚 步;

27、除非你的安装了缓存,不然你的php脚本每次被访问都需要被重编译。建议安装个php缓存程序,这样通过去除一些重复的编译来很明显的提高你 20-{bfb}的性能;

28、建议用memcached,高性能的分布式内存对象缓存系统,提高动态网络应用程序性能,减轻数据库的负担;

29、使用ip2long()和long2ip()函数把IP地址转成整型存放进数据库而非字符型。这几乎能降低1/4的存储空间。同时可以很容易 对地址进行排序和快速查找;

30、使用checkdnsrr()通过域名存在性来确认部分email地址的有效性,这个内置函数能保证每一个的域名对应一个IP地址;

31、如果你在使用php5和mysql4.1以上的版本,考虑使用mysql_*的改良函数mysqli_*;

32、试着喜欢使用三元运算符(?:);

33、在你想在彻底重做你的项目前,看看PEAR有没有你需要的。PEAR是个巨大的资源库,很多php开发者都知道;

34、使用highlight_file()能自动打印一份很好格式化的页面源代码的副本;

35、使用error_reporting(0)函数来预防潜在的敏感信息显示给用户。理想的错误报告应该被xx禁用在php.ini文件里。可是 如果你在用一个共享的虚拟主机,php.ini你不能修改,那么你{zh0}添加error_reporting(0)函数,放在每个脚本文件的{dy}行(或用 require_once()来加载)这能有效的保护敏感的SQL查询和路径在出错时不被显示;

36、使用 gzcompress() 和gzuncompress()对容量大的字符串进行压缩(解压)在存进(取出)数据库时。这种内置的函数使用gzip算法能压缩到90%;

37、通过参数变量地址得引用来使一个函数有多个返回值。你可以在变量前加个“&”来表示按地址传递而非按值传递;

38、Fully understand “magic quotes” and the dangers of SQL injection. I’m hoping that most developers reading this are already familiar with SQL injection. However, I list it here because it’s absolutely critical to understand. If you’ve never heard the term before, spend the entire rest of the day googling and reading.

39、使用strlen()因为要调用一些其他操作例如lowercase和hash表查询所以速度不是太好,我们可以用isset()来实现相似 的功能,isset()速度优于strlen();

40、When incrementing or decrementing the value of the variable $i++ happens to be a tad slower then ++$i. This is something PHP specific and does not apply to other languages, so don’t go modifying your C or Java code thinking it’ll suddenly become faster, it won’t. ++$i happens to be faster in PHP because instead of 4 opcodes used for $i++ you only need 3. Post incrementation actually causes in the creation of a temporary var that is then incremented. While pre-incrementation increases the original value directly. This is one of the optimization that opcode optimized like Zend’s PHP optimizer. It is a still a good idea to keep in mind since not all opcode optimizers perform this optimization and there are plenty of ISPs and servers running without an opcode optimizer.

目前已经有超过600个Linux发行版,各种发行版形形色色:功能定位不同 (Live、服务器、桌面、防火墙等)、国家地区(全球各地)、基于主流的发行版(Redhat、SUSE、Debian)、桌面环境(GNOME、 KDE等)、硬件体系(X86、MIPS等)。以下是你应该知道10个特别的Linux发行版,按字母排序:

1,64Studio

基于Debian/Ubuntu,是一份软件套装,面向x86_64硬件平台上的数字内容创作,支持AMD的64位CPU及Intel的EM64T 芯片。提供2D/3制图程序、动画软件、发布、WEB设计、音频编辑、视频编辑以及其它功能。

2,ArtistX

ArtistX是基于Ubuntu的可启动DVD,它包含很多服务于音频、2D和3D图形及视频制作的免费的多媒体软件包。该项目的目标是展示 GNU/Linux平台上多媒体软件的多样性,并使得富有创新性的个人能够在自由软件的帮助下完成他们的任务。

3,AsteriskNOW

Digium发布的VoIP网关发行版。基于开源的语音网关Asterisk建立,并提供WEB管理界面。功能强大。

4,LiveKiosk

你需要一个基于WEB的kiosk,这个就可以帮助你实现。通过LIVECD和U盘使用kiosk,{wy}缺陷的是无线连接不支持WEP或WPA安全 加密。CD镜像文件非常小(~140MB)。

5,LinuxMCE

这是一个家庭娱乐解决方案,除了这些还提供网络、安全、通讯等功能。实在是太强大了。

6,PuppyLinux

这是非常小巧的发行版,麻雀虽小,但五脏俱全。快速简单,还提供了LIVECD或USB盘只有100MB。

7,SuperGamer

这是一个LiveDVD的游戏天堂,用来消磨时间的{zj0}礼物。

8,TempestShowroom

这是一个{wy}获得“xx无价的Linux发行版”,这个liveCD可以让你的计算机显示器发出特殊的无线电信号,可以让你在收音机中听到计算机的 特殊音乐。玩的开心点,千成不要告诉别人。

9,Zenwalk

基于Slackware发行版,非常快速,轻巧、功能强大的发行版,可用来做你的办公、软件开发。

10,Zeroshell

这是一个非常优秀的网关系统,提供路由、防火墙、HTTP代理服务、VPN服务器、RADIUS服务器、LDAP服务器、DNS服务器等功能。

SSH可以通过将联机的封包加密的技术进行资料的传递; 使用SSH可以把传输的所有数据进行加密,即使有人截获到数据也无法得到有用的信息。同时数据经过压缩,大大地加快了传输的速度。总之,通过SSH的使 用,可以确保资料传输比较安全并且传输效率较高。

不过,并非所有人知道PHP可以与SSH连接的特性以及与执行远程命令的能力,不过这方面却非常有用。由于我们可以在很多不同的方面利用PHP,因 此它有很多设置选项来控制其行为。一组庞大的可选参数能够保证您可以将 PHP 用于许多不同的目的,但这同时也意味着这些参数和服务端配置的组合会带来一些安全问题。笔者一直在PHP CLI应用程序中使用SSH,笔者是从cronjobs中使用它的,不过一开始并非十分简单,可以说颇费周折。关于安全使用Shell2 函数的手册也不是十分实用,笔者进行了多次试验之后才有了今天这篇小文章,愿您读了之后能为您配置PHP节省一点儿时间。

在这篇文章中,笔者需要假设:

你正在运行的操作系统是Debian / Ubuntu。如果你运行的不是Debian / Ubuntu,你可能需要用你的Linux发行版本提供的数据包管理器来替换本文对应内容。

你运行的是PHP5.如果你运行的不是PHP5,可用PHP4代替之。

你对PHP和服务器管理有基本的了解。

你已经安装了PHP。

先决条件

安装程序包

首先,让我们安装下面的程序包:

sudo aptitude update

sudo aptitude install php5-dev php5-cli php-pear buid-essential \

openssl-dev zlib1g-dev

安装完成进入下一步。

编译libssh2

在从sourceforge网站下载了Libssh2之后,我们需要编译它,不过不要担心,你只需要按照如下的方法操作:

cd /usr/src

wget surfnet.dl.sourceforge.net/sourceforge/libssh2/libssh2-0.14.tar.gz

tar -zxvf libssh2-0.14.tar.gz

cd libssh2-0.14/

。/configure

make all install

如果你想检查是否有了一个新版本,可以查看SF.NET.不过,0.14这个版本就足够了。

安装

安装ssh2.so

下一步,我们需要将libssh和 PHPr链接起来。有一个PECL模块可以完成这个功能。我们可以使用PEAR安装它。

pear install -f ssh2

-f参数确保SSH2被安装,即使并没有一个稳定的选择对象。你还可以使用如下的包名称:ssh2-beta来强行运行。

现在你需要确保我们这个新的SSH2.SO模块被PHP加载。编辑你的php.ini文件(对于CLI实用程序:/etc/php5/cli /php.ini,对于Apache实用程序:/etc/php5/apache2/php.ini)

extension=ssh2.so

这应该放在“Dynamic Extensions”的下面,大约在第515行左右。

PHP支持SSH编写代码

你刚刚在PHP中启用了SSH2。那么现在应该如何利用它呢?有两个选择。SSH支持:

1.执行方法:

这告诉你的服务器的操作系统来执行什么东西,并且通过管道传回到你的脚本。

2.外壳方法:

这种方法在操作系统中打开一个实际的外壳,这正像通过终端应用程序登录时所操作的那样。有一些路由器并没有一个xx的POSIX一致性实施过程,而 是在你登录时立即运行其自身的应用程序。这时你就需要这种方法。

1,利用Xmanager,linux启用XDMCP协议(可直接修改配置文件,也可以采用在Xshell中运行gdmconfig或 gdmsetup,选择XDMCP选项卡,勾选启动XDMCP即可),Xbrowser即可发现linux主机, 以图形化方式访问linux。

2,linux启用VNC服务,客户端即可用浏览器(通过自动加载的JAVA Applet插件)或VNC的windows版本的客户端VNC Viewer 以图形化方式来访问linux。

3,利用Xmanager的Xshell工具,SSH远程连接至Linux主机,在linux命令提示符下直接运行gnome-session 或startkde,Xmanager会自动运行Xmanager-Passive来接收由SSH转发至本地的图形界面信息。

以上提供的方法都是通过相关工具实现linux桌面远程转发至本地(XDMCP协议实现)来实现本地的图形化管理。

linux还有个WEB方式的管理工具 webmin(用Perl写成,采用Apache服务器,可实现web方式管理linux主机)

许多刚接触Linux的网络管理员发现,他们很难由指向点击式的安全配置界面转换到另一种基 于编辑复杂而难以捉摸的文本文件的界面。本文列出七条管理员能够也应该可以做到的步骤,从而帮助他们建立更加安全的Linux服务器,并显著降低他们所面临的 风险。

请任何大型机构的网络管理员对Linux和网络操作系统(如Windows NT或Novell)进行比较,可能他会承认Linux是一个内在更加稳定,扩展性更强的解决方案。可能他还会承认,在保护系统免受外部攻击方 面,Linux可能是三者中最难配置的系统。

这种认识相当普遍——许多刚接触Linux的网络管理员发现,他们很难由指向点击式的安全配置界面转换到另一种基于编辑复杂而难以捉摸的文本文件的界面。 多数管理员充分认识到他们需要手工设置阻碍和障碍,以阻止可能的黑客攻击,从而保护公司数据的安全。只是在他们并不熟悉的Linux领域内,他们不确定自 己的方向是否正确,或该从何开始。

这就是本文的目的所在。它列出一些简易的步骤,帮助管理员保障Linux的安全,并显著降低他们面临的风险。本教程列出了七个这样的步骤,但您也可以在 Linux手册和讨论论坛中发现更多内容。

保护根账户

Linux系统上的根账户(或超级用户账户)就像是滚石演唱会上的后台通行证一样——它允许您访问系统中的所有内容。因此,值得采取额外的步骤对它加以保 护。首先,用密码命令给这个账户设置一个难以猜测的密码,并定期进行修改,而且这个密码应xx于公司内的几个主要人物(理想情况下,只需两个人)知晓。

然后,对/etc/securetty文件进行编辑,限定能够进行根访问的终端。为避免用户让根终端“开放”,可设置TMOUT当地变量为非活动根登录设 置一个使用时间;并将HISTFILESIZE当地变量设为0,保证根命令记录文件(其中可能包含机密信息)处于禁止状态。{zh1},制订一个强制性政策,即 使用这个账户只能执行特殊的管理任务;并阻止用户默认以根用户服务登录。

提示:关闭这些漏洞后,再要求每一个普通用户必须为账户设立一个密码,并保证密码不是容易识别的启示性密码,如生日、用户名或字典上可查到的单词。

安装一个防火墙

防火墙帮 助您过滤进出服务器的数据包,并确保只有那些与预定义的规则相匹配的数据包才能访问系统。有许多针对Linux的优秀防火 墙,而且防火墙代码甚至可直接编译到系统内核中。首先应用ipchains或iptables命令为进出网络的数据包定义输入、输出和转寄规则。可以根据 IP地址、网络界面、端口、协议或这 些属性的组合制订规则。这些规则还规定匹配时应采取何种行为(接受、拒绝、转寄)。规则设定完毕后,再对防火墙进行详细检测,保证没有漏洞存在。安全的防 火墙是您抵御分布式拒绝服务(DDoS)攻击这类常见攻击的{dy}道防线。

使用OpenSSH处理网络事务

在网络上传输的数据安全是客户-服务器构架所要处理的一个重要问题。如果网络事务以纯文本的形式进行,黑客就可能“嗅出”网络上传输的数据,从而获取机密 信息。您可以用OpenSSH之类的安全壳应用程序为传输的数据建立一条“加密”通道,关闭这个漏洞。以这种形式对连接进行加密,未授权用户就很难阅读在 网络主机间传输的数据。

禁用不必要的服务

大多数Linux系统安装后,各种不同的服务都被xx,如FTP、telnet、UUCP、ntalk等等。多数情况下,我们很少用到这些服务。让它们处 于活动状态就像是把窗户打开让盗贼有机会溜进来一样。您可以在/etc/inetd.conf或/etc/xinetd.conf文件中取消这些服务,然 后重启inetd或xinetd后台程序,从而禁用它们。另外,一些服务(如数据库服务器)可能在开机过程中默认启动,您可以通过编辑/etc /rc.d/*目录等级禁用这些服务。许多有经验的管理员禁用了所有系统服务,只留下SSH通信端口。

使用垃圾邮件和反病毒过滤器

垃圾邮件和病毒干扰用户,有时可能会造成严重的网络故障。Linux有极强的抗病毒能力,但运行Windows的客户计算机可能更易受病毒攻击。因此,在邮件服务器上安装一个垃圾邮件和病毒过滤器,以“阻 止”可疑信息并降低连锁崩溃的风险,会是一个不错的主意。

首先安装SpamAssassin这个应用各种技术识别并标注垃圾邮件的{yl}开源工具,该程序支持基于用户的白名单与灰名单,提高了xx度。接下来,根据 常规表达式安装用户级过滤,这个工具可对收件箱接收的邮件进行自动过滤。{zh1}再安装Clam Anti-Virus,这个免费的反病毒工具整合 Sendmail和SpamAssassin,并支持电子邮件附件的来件扫描。

安装一个入侵检测系统

入侵检测系统(IDS)是一些帮助您了解网络改变的早期预警系统。它们能够准确识别(并证实)入侵系统的企图,当然要以增加资源消耗与错误线索为代价。您 可以试用两种相当知名的IDS:tripwire,它跟踪文件签名来检测修改;snort,它使用基于规则的指示执行实时的信息包分析,搜索并识别对系统 的探测或攻击企图。这两个系统都能够生成电子邮件警报(以及其它行为),当您怀疑您的网络受到安全威胁而又需要确实的证据时,可以用到它们。

定期进行安全检查

要保障网络的安全,这{zh1}一个步骤可能是最为重要的。这时,您扮演一个反派的角色,努力攻破您在前面六个步骤是建立的防御。这样做可以直接客观地对系统的 安全性进行评估,并确定您应该修复的潜在缺陷。

有许多工具可帮助您进行这种检查:您可以尝试用Crack和John the Ripper之类的密码xx器破译您的密码文件;或使用nmap或 netstat来寻找开放的端口;还可以使用tcpdump探测网络;另外,您还可以利用您所安装的程序(网络服务器、防火墙、Samba)上的公开漏 洞,看看能否找到进入的方法。如果您设法找到了突破障碍的办法,其他人同样也能做到,您应立即采取行动关闭这些漏洞。

保护Linux系统是一项长期的任务,完成上述步骤并不表示您可以高枕无忧。访问Linux安全论坛了解更多安全提示,同时主动监控并更新系统安全措施。

Linux内核安全随着Linux系统的流 行,也就越来越受到大家的关注,这里向大家介绍LIDS也就是Linux内核安全入侵侦察系统。看看 Linux内核存在哪些问题,LIDS又能为我们带来哪些方面特点。

LIDS( Linux入侵侦察系统)是Linux内核补丁和系统管理员工lidsadm),它加强了Linux内核。它在内核中实现了一种安全模式 — 参考模式以及内核中的Mandatory Access Control(命令进入控制)模式。本文将阐述LIDS的功能和如何使用它来建立一个安全的Linux系统。

为什么选择LIDS

随着互连网上Linux越来越受欢迎 ,越来越多现有GNU/LINUX系统上的应用软件中的安全漏洞被发现。很多程序利用了程序员的粗心,例如缓存溢出、格式化代码攻击。当系统安全受到程序 的危及,黑客获得ROOT权限以后,整个系统将被入侵者控制。

由于代码的开放性,我们可以获得很多所希望Linux应用程序的原代码,并且根据我们的需要来修改。所以bug能很容易地被找到,并很快修补。 但是当漏洞被揭示后,而系统管理员疏于给漏洞打补丁,从而造成很容易地就被入侵,更糟的是黑客能获得ROOT SHELL。利用现有的GNU/Linux系统,他为所欲为。这正是LIDS想要解决的问题。

首先看看现有的GNU/Linux系统存在哪些问题。

文件系统未受到保护

系统中的很多重要的文件,例如 /bin/login,一旦黑客入侵后,他可以上传修改过的login文件来代替/bin/login ,然后他就可以不需要任何登陆名和密码就登陆系统。这常被称为Trojan house。

进程未受到保护

系统上运行的进程是为某些系统功能所服务的,例如HTTPD是一个web服务器来满足远程客户端对于 web的需求。作为web服务器系统,保护其进程不被非法 终止是很重要的。但是当入侵者获得了ROOT权限后,我们却无能为力。

系统管理未受保护

很多系统管理,例如,模块的装载/卸载,路由的设 置,防火墙的 规则,能很容易就被修改,如果用户的ID是0。所以当入侵者获得ROOT权限后,就变得很不安全。

超级用户(root)作为ROOT可能滥用权限

他可以为所欲为,作为ROOT他甚至可以对现有的权限进行修改。

综上所述,我们发现在现有的Linux系统中的进入控制模式是不足以建立一个安全的Linux系统。我们必须在系统中添加新的模式来解决这些问 题。这就是LIDS所要做的。

LIDS的特色

Linux入侵侦察系统是Linux内核补丁和系统管理员工具,它加强了内核的安全性。它在内核中实现了参考监听模式以及Mandatory Access Control(命令进入控制)模式。当它起作用后,选择文件进入,每一个系统/网络的管理操作,任何使用权限, raw device, mem和 I/O 进入将可以禁止甚至对于ROOT也一样。它使用和扩展了系统的功能,在整个系统上绑定控制设置,在内核中添加网络和文件系统的安全特性,从而加强了安全 性。你可以在线调整安全保护,隐藏敏感进程,通过网络接受安全警告等等。

简而言之,LIDS提供了保护、侦察、响应的功能,从而是LINUX系统内核中的安全模式得以实现。

保护

LIDS提供以下的保护:

保护硬盘上任何类型的重要文件和目录,任何人包括ROOT都无法改变。能保护重要进程不被终止 能防止非法程序的RAW IO 操作。保护硬盘,包括MBR保护,等等。能保护系统中的敏感文件,防止未被授权者(包括ROOT)和未被授权的程序进入。

侦察

当有人扫描你的主机, LIDS能侦察到并报告系统管理员。LIDS也可以检测到系统上任何违法规则的进程。

响应

当有人违反规则, LIDS会将非法的运作细节记录到受LIDS保护的系统log文件中。LIDS还可以将log信息传到你的信箱中。LIDS也可以马上关闭与用户的对话。

郑重声明:资讯 【银行:公开打劫的天朝金融业/草泥马勒戈壁的郑州农行】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——