记录生活点滴.

20款优秀免费的WordPress留言表单插件

通常,建站时我们都期望能给访客提供一个联系站长的通道,比如在线留言等;但往往苦于技术能力等原因,很受苦恼。采用Wordpress建站,好处是插件多,可以使得这种功能变得简单。

以下莫国仲给大家推荐20款免费的插件,有些直接就能够套入使用了。

1. Contact Coldform

20款免费Wordpress“联系我们”表单插件推荐contact_coldform

Contact Coldform 是一个易用、无冗余,高可定制化的“联系我们”表单插件。你可以将它添加到任何既定的页面,或者通过简单的语句进行参数传递。不过有一个注意的地方是这个插件更新频率明显比其他的低。

2、Contact Form 7

20款免费Wordpress“联系我们”表单插件推荐 contact_form_7

Contact Form 7 是Wordpress此类表单插件中使用最广泛的插件之一。它支持Ajax过滤,具有Captcha的垃圾邮件过滤功能,其中集成有著名的Akismet 。不过莫国仲认为,Contact Form 7插件以后要更好发展,在UI方面应更多考虑面向非技术开发人员。

3. Contact Form by ContactMe.com

20款免费Wordpress“联系我们”表单插件推荐 contactme_form

由ContactMe.com推出的Contact Form 也是一款功能丰富的联系我们表单插件;该插件提供三种版本类型:两种收费版、一种免费版,免费版支持在自己Wordpress版权下创建一个表单,不过会 限制一些功能,比如附加归档功能等,而且一个网站仅能创建一个。安装时需要提供邮箱地址,用来创建ContactMe.com上的账户。

4. Custom Contact Forms

20款免费Wordpress“联系我们”表单插件推荐 custom_contact_form

Custom Contact Forms是一款非常有潜质并可定制化的插件,通过它你可以对页面很多参数、元素进行调整,并且能够定制、制作出成功提交表单后的“感谢”页面。

5. Fast Secure Contact Form

20款免费Wordpress“联系我们”表单插件推荐 fast_secure_contact_form

Fast Secure Contact Form支持不限次数创建表单,也支持文件上传,上传时有类型、大小限制,此外,该插件提供一体化的Akismet垃圾邮件防护,数据库备份,用户提交表单后自动回复功能,等等。

6. ONW Simple Contact Form

20款免费Wordpress“联系我们”表单插件推荐 onw_simple_contact_form

ONW Simple Contact Form是一款所见即所得的简单表单插件;你可以通过配置与reCaptcha.进行整合;除了支持简码方式创建表单,还可以在插入页面或者参数时,利用可视化按钮编辑器来操作。

7. SimpleModal Contact Form (SMCF)

20款免费Wordpress“联系我们”表单插件推荐simple_modal_contact_form

SimpleModal Contact Form是一种是用JQuery实现的模态窗口表单插件,SMCF可配置到用户的IP地址以及选择是否发送消息的副本给自己。

8. Slick Contact Forms

20款免费Wordpress“联系我们”表单插件推荐slick_contact_forms

Slick Contact Forms是一个利用widget(微构件技术)实现的表单插件,它可以支持在一个页面中构建多个复杂的表单内容。这种表单不仅可悬浮动,还能够粘贴、下拉、甚至在表面实现滑动效果。莫国仲本人推荐这种,超赞的。

9. WP Flex Contact Form

20款免费Wordpress“联系我们”表单插件推荐_wp_flex_contact_forms.

WP Flex Contact Form是一种基于Flex/Flash的Wordpress插件,据称它可以大大减少垃圾邮件,因为目前大多数防垃圾邮件程序还没能很好处理Flash。此外,咱可以设置它的背景色、自定义错误信息等。

10. A Capture Contact Form

20款免费Wordpress“联系我们”表单插件推荐a_capture_contact_form

这个Wordpress插件可以让你在网站上以联系人选项卡方式实现,不过呢,得先在AWebVoice.com上边注册账号。

11. Simple Contact Form

20款免费Wordpress“联系我们”表单插件推荐simple_contact_form

Simple Contact Form是一个支持在Wordpress主题网页的任何地方添加的插件,它使用Ajax技术对页面进行异步加载,使用体验上会非常快捷、流畅。

12. Super Contact Form

20款免费Wordpress“联系我们”表单插件推荐super_contact_form

Super Contact Form是一个精巧、而且非常简单的插件,安装成功后,咱只需要在Wordpress管理版面添加制定邮箱地址即可,它会出来一个提示语:这是一个在WordPress.org上边受到广泛好评的插件!

13. Visitor Contact Forms

20款免费Wordpress“联系我们”表单插件推荐visitor_contact_forms

这个插件的显着特点是它具有地理位置功能(这有助于确定留言者的所在地),并且它集成了谷歌地图。不过呢,像Akismet那样,它也需要你创建一个帐户,才能提供表单插件的ID(需要它来激活和使用插件)。

14. WD3K Ajax Sliding Contact Form

20款免费Wordpress“联系我们”表单插件推荐wd3k_ajax_sliding_contact_form

WD3K 是一种基于Ajax驱动、使用Contactable jQuery的插件;倘若你想建一个酷炫效果的Wordpress主题留言插件,它是个非常不错的选择喔~!

15. Magic Contact

20款免费Wordpress“联系我们”表单插件推荐magic_contact

Magic Contact插件跟上边的WD3K有些类似。

16. Easy Contact

20款免费Wordpress“联系我们”表单插件推荐easy_contact

Easy Contact部分功能基于WP Contact Form,有一个专门的GUI支持,可以切换源代码方式,通过它不需要打开主题文件,同时它可以搜集用户的引用、浏览器类型和IP地址等信息。

17. Enhanced WP Contact Form

20款免费Wordpress“联系我们”表单插件推荐enhanced_wp_contact_form

这个插件由Joost de Valk开发,他在WordPress圈中享有很高知名度的作者。他给Wordpress开发的插件还有WordPress SEO 插件和Google Analytics插件,感兴趣的童鞋可以搜一下。

18. Usernoise Modal Feedback/Contact Form

20款免费Wordpress“联系我们”表单插件推荐usernoise_contact_form

这个插件会在Wordpress主题一侧边栏出现一个“反馈”的按钮,单击后出现一个悬浮的表单窗口,它是一个即插即用、简易安装的解决方案,它甚至可以继承你Wordpress主题样式及排版哦!

19. Cool Contact Form

20款免费Wordpress“联系我们”表单插件推荐cool_contact_form

Cool Contact Form通过在客户端(JavaScript)验证的方式实现,可以很快捕捉错误。不过呢,咱就得熟悉CSS,需要通过修改Wordpress样式表来调整联系表单的外观和体验了。

20. Grunion Contact Form

这个插件是一个非常简单的插件,不需要繁琐的步骤就可以整合到你的Wordpress网站中。你可以使用源代码(简码)方式创建联系我们的表单,这样就不需要再修改Wordpress主题文件了。

Popularity: 1%

php连接oracle乱码问题 终于解决

对于我这个菜鸟根本不懂php,让我去修改php+++oracle的中文乱码,实在是头痛,搞了三天没有整好,今天去细细深究终于OK了,

1.首先排出是apahce的问题,因为我在网上看过他人的文档说是apache的httpd.conf问题,结果不是.
2.我的oracle数据库是zhs16gbk编码,php实际是utf-8.
3.在官网上查看到在php里有一个文件db.inc.php里面有个配置问题:
原来的:  $DB['DB']= ociplogon($DB['USER'], $DB['PASSWORD'], $connect);//有的是oci_connect,其实一样的。
修改后的:$DB['DB']= ociplogon($DB['USER'], $DB['PASSWORD'], $connect,’zhs16gbk’);  //这里用的是GB2312编码
参考资料:http://www..net/manual/en/function.-pconnect.php

Popularity: 1%

mysql 1064 USING BTREE问题

从服务器上通过mysqldump命令导出文件

在导入到另外的库时,提示:

返回:

ERROR 1064 (42000) at line 1972: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘) ENGINE=MyISAM DEFAULT CHARSET=utf8′ at line 13

经查找是mysql版本的问题,导入的库是 server version: 5.0.22,导出的库5.1.41.

打开导出的mysql文件,搜索“USING BTREE”
KEY `code` (`code`) USING BTREE,
修改成
KEY `code`USING BTREE(`code`)

重新导入,问题解决。

 

Popularity: 2%

apache 不修改程序重定向首页名称 rewriterule ^/$ RedirectMatch

最近有个项目需要对首页进行修改,程序是THINKPHP的,需求如下:

将/的内容转到 /more.html

比如:我打开 http://jerryji.cn/的时候跳转到 http://jerryji.cn/more.html

在apache的文档里找到解决方法如下:

RedirectMatch ^/$ /more.html

Popularity: 2%

2011-08-24Linux

没有评论
254 views

Linux 删除 – 开头的文件

之前在Linux上遇到了 以 – 开头的的文件名。

使用

–abc

rm “–abc”

rm “\-\-abc”

都无法删除,问题不在shell传值,是rm 将 –abc 理解成参数了。

既然问题是这样,那么正好可以使用./ 这个路径前缀变通解决这个问题。

rm -rf ./–abc

这样就OK了。

Popularity: 2%

2011-08-01Linux

没有评论
237 views

CentOS 5.5 yum安装Nginx

使用centos的yum安装软件非常的简单方便,但也有一个缺点,就是从yum安装的软件不能保证是最新版的。如果你需要安装最新版的nginx,就需要从官网下载源代码自己手动编译安装了。这篇文章主要介绍如何使用yum安装nginx。
安装EPEL软件包

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

安装nginx
在安装之前,你可以使用yum info nginx查看nginx的版本。

install

nginx.conf的位置在/etc/nginx/
nginx 位置在/usr/sbin/
停止nginx:service nginx stop
启动nginx:service nginx start
重启nginx:service nginx restart

Popularity: 3%

2011-08-01Linux

没有评论
270 views

定制 apache 索引(目录浏览)样式

ubuntu(LAMP)默认的配置文件目录在

/etc/2/sites-enabled/000-default

说明: /etc/apache2/ 目录的 httpd.conf 和 apache2.conf 也都是配置文件。一个是全局,一个是用户定义。sites-enabled 可以放多个配置文件。可能是为了便于管理吧。

找到打开了 indexes(目录浏览的部分)

 

#表示开启了索引模式(也就是目录浏览)

Options Indexes

indexOptions FancyIndexing ScanHTMLTitles NameWidth=128 DescriptionWidth=256 HTMLTable VersionSort FoldersFirst

红色部分为可用参数,含义如下:

#ScanHTMLTitles:搜索HTML标题

#NameWidth:文件命显示字节数

#DescriptionWidth:描述显示字节数

#HTMLTable:允许HTML格式

#FoldersFirst:目录优先

#索引排除语法

IndexIgnore header.html footer.html

header.html footer.html 这两个文件不会在索引(目录浏览)中出现。

#索引头部嵌入文件

HeaderName /data/index/header.html

#索引底部嵌入文件

ReadmeName /data/index/footer.html

#默认索引排序方式

IndexOrderDefault Ascending Date

#关闭服务器标志

ServerSignature Off

apache 官方参考文档 mod_autoindex

Popularity: 3%

2011-08-01Linux

没有评论
335 views

如何踢出Linux下其他登陆用户

今天服务器又被攻击了,机房又给我换了一个ip,需要给他们root权限。修改好以后,但是那个root死活不下线。

于是我用下面的办法把他踢下去,然后改密码。

>>who -w
berg – tty1 2009-05-24 18:51
berg + pts/0 2009-05-24 19:02 (123.120.13.***)

berg@sharej.com /home/berg
>>ps aux | grep tty1
root 3221 0.0 0.0 2628 1204 tty1 Ss 18:50 0:00 /bin/login –
berg 5046 0.0 0.0 3116 732 pts/0 R+ 19:20 0:00 grep –color=auto tty1

berg@sharej.com /home/berg
>>sudo kill -9 3221

很简单,很暴力。

Popularity: 3%

保证Linux Apache Web服务器安全的10个建议

如果你是一个系统管理员,你应该按照以下的10点建议来保证Apache web服务器的安全。

1、禁用不必要的模块

如果你打算源码编译安装apache,你应该禁用以下的模块。如果你运行./configure -help,你将会看到所有可用的你可以禁用/开启的模块。

userdir –用户特定用户的请求映射。例如:带用户名的URL会转化成服务器的一个目录。

autoindex – 当没有默认首页(如index.html)时显示目录列表。

status –显示服务器统计

env – 清除或修改环境变量

setenvif –根据客户端请求头字段设置环境变量

cgi –CGI脚本

actions – 根据特定的媒体类型或请求方法,激活特定的CGI脚本

negotiation –提供内容协商支持

alias – 提供从文件系统的不同部分到文档树的映射和URL重定向

include –实现服务端包含文档(SSI)处理

filter –根据上下文实际情况对输出过滤器进行动态配置

version –提供基于版本的配置段支持

asis – 发送自己包含HTTP头内容的文件

当你执行./configure按照下面禁用以上的所有模块。

./configure \

–enable-ssl \

–enable-so \

–disable-userdir \

–disable-autoindex \

–disable-status \

–disable-env \

–disable-setenvif \

–disable-cgi \

–disable-actions \

–disable-negotiation \

–disable-alias \

–disable-include \

–disable-filter \

–disable-version \

–disable-asis

如果激活ssl且禁用mod_setenv,你将会得到以下错误。

错误: Syntax error on line 223 of /usr/local/2/conf/extra/httpd-ssl.conf: Invalid command ‘BrowserMatch’, perhaps misspelled or defined by a module not included in the server configuration

解决方案:如果你使用ssl,不要禁用setenvif模块。或者你禁用setenvif模块,可以在httpd-ssl.conf注释BrowserMatch。

安装完成全,执行httpd -l,会列出所有已安装的模块。

# /usr/local/apache2/bin/httpd -l

Compiled in modules:

core.c

mod_authn_file.c

mod_authn_default.c

mod_authz_host.c

mod_authz_groupfile.c

mod_authz_user.c

mod_authz_default.c

mod_auth_basic.c

mod_log_config.c

mod_ssl.c

prefork.c

http_core.c

mod_mime.c

mod_dir.c

mod_so.c

在这个例子里,我们安装了如下apache模块:

core.c –Apache核心模块

mod_auth* –各种身份验证模块

mod_log_config.c –允许记录日志和定制日志文件格式

mod_ssl.c – SSL

prefork.c – 一个非线程型的、预派生的MPM

httpd_core.c – Apache核心模块

mod_mime.c – 根据文件扩展名决定应答的行为(处理器/过滤器)和内容(MIME类型/语言/字符集/编码)

mod_dir.c – 指定目录索引文件以及为目录提供”尾斜杠”重定向

mod_so.c – 允许运行时加载DSO模块

2、以单独的用户和用户组运行Apache

Apache可能默认地以nobody或daemon运行。让Apache运行在自己没有特权的帐户比较好。例如:用户apache。

创建apache用户组和用户。

groupadd apache

useradd -d /usr/local/apache2/htdocs -g apache -s /bin/false apache

更改httpd.conf,正确地设置User和Group。

# vi httpd.conf

User apache

Group apache

之后重启apache,执行ps -ef命令你会看到apache以“apache”用户运行(除了第一个都是以root运行之外)。

# ps -ef | grep -i http | awk ‘{print $1}’

root

apache

apache

apache

apache

apache

3、限制访问根目录(使用Allow和Deny)

在httpd.conf文件按如下设置来增强根目录的安全。

 

Options None

Order deny,allow

Deny from all

 

在上面的:

Options None –设置这个为None,是指不激活其它可有可无的功能。

Order deny,allow – 这个是指定处理Deny和Allow的顺序。

Deny from all –阻止所有请求。Deny的后面没有Allow指令,所以没人能允许访问。

4、为conf和bin目录设置适当的权限

bin和conf目录应该只允许授权用户查看。创建一个组和把所有允许查看/修改apache配置文件的用户增加到这个组是一个不错的授权方法。

下面我们设置这个组为:apacheadmin

创建组:

groupadd apacheadmin

允许这个组访问bin目录。

chown -R root:apacheadmin /usr/local/apache2/bin

chmod -R 770 /usr/local/apache2/bin

允许这个组访问conf目录。

chown -R root:apacheadmin /usr/local/apache2/conf

chmod -R 770 /usr/local/apache2/conf

增加合适的用户到这个组。

# vi /etc/group

apacheadmin:x:1121:user1,user2

5、禁止目录浏览

如果你不关闭目录浏览,用户就能看到你的根目录(或任何子目录)所有的文件(目录)。

比如,当他们浏览http://{your-ip}/images/而images下没有默认首页,那么他们就会在浏览器中看到所有的images文件(就像ls -l输出)。从这里他们通过点击就能看到私人的图片文件,或点点击子目录看到里面的内容。

为了禁止目录浏览,你可以设置Opitons指令为“None“或者是“-Indexes”。在选项名前加“-”会强制性地在该目录删除这个特性。

Indexes选项会在浏览器显示可用文件的列表和子目录(当没有默认首页在这个目录)。所以Indexes应该禁用。

 

Options None

Order allow,deny

Allow from all

(or)

Options -Indexes

Order allow,deny

Allow from all

 

6、禁用.htaccess

在htdocs目录下的特定子目录下使用.htaccess文件,用户能覆盖默认apache指令。在一些情况下,这样不好,应该禁用这个功能。

我们可以在配置文件中按如下设置禁用.htaccess文件来不允许覆盖apache默认配置。

 

Options None

AllowOverride None

Order allow,deny

Allow from all

7、禁用其它选项

下面是一些Options指令的可用值。

Options All –所有的选项被激活(除了MultiViews)。如果你不指定Options指令,这个是默认值。

Options ExecCGI –执行CGI脚本(使用mod_cgi)。

Options FollowSymLinks –如果在当前目录有符号链接,它将会被跟随。

Options Includes –允许服务器端包含文件(使用mod_include)。

Options IncludesNOEXEC –允许服务器端包含文件但不执行命令或cgi。

Options Indexes –允许目录列表。

Options MultiViews -允许内容协商多重视图(使用mod_negotiation)

Options SymLinksIfOwnerMatch – 跟FollowSymLinks类似。但是要当符号连接和被连接的原始目录是同一所有者是才被允许。

绝不要指定“Options All”,通常指定上面的一个或多个的选项。你可以按下面代码把多个选项连接。

Options Includes FollowSymLinks

当你要嵌入多个Directory指令时,“+”和“-”是有用处的。也有可能会覆盖上面的Directory指令。

如下面,/site目录,允许Includes和Indexes。

 

Options Includes Indexes

AllowOverride None

Order allow,deny

Allow from all

 

对于/site/en目录,如果你需要继承/site目录的Indexes(不允许Includes),而且只在这个目录允许FollowSymLinks,如下:

 

Options -Includes +FollowSymLink

AllowOverride None

Order allow,deny

Allow from all

 

/site目录允许IncludesIndexes

/site/en目录允许Indexes和FollowSymLink

8、删除不需要的DSO模块

如果你加载了动态共享对象模块到apache,他们应该在httpd.conf文件在“LoadModule”指令下。

请注意静态编译的Apache模块是不在“LoadModule”指令里的。

在httpd.conf注释任何不需要的“LoadModules”指令。

grep LoadModule /usr/local/apache2/conf/httpd.conf

9、限制访问特定网络(或IP地址)

如果你需要只允许特定IP地址或网络访问你的网站,按如下操作:

只允许特定网络访问你的网站,在Allow指令下给出网络地址。

 

Options None

AllowOverride None

Order deny,allow

Deny from all

Allow from 10.10.0.0/24

 

只允许特定IP地址访问你的网站,在Allow指令下给出IP地址。

 

Options None

AllowOverride None

Order deny,allow

Deny from all

Allow from 10.10.1.21

 

10、禁止显示或发送Apache版本号(设置ServerTokens)

默认地,服务器HTTP响应头会包含apache和php版本号。像下面的,这是有危害的,因为这会让黑客通过知道详细的版本号而发起已知该版本的漏洞攻击。

Server:Apache/2.2.17 (Unix) /5.3.5

为了阻止这个,需要在httpd.conf设置ServerTokens为Prod,这会在响应头中显示“Server:Apache”而不包含任何的版本信息。

# vi httpd.conf

ServerTokens Prod

下面是ServerTokens的一些可能的赋值:

ServerTokens Prod 显示“Server:Apache”

ServerTokens Major 显示 “Server:Apache/2″

ServerTokens Minor 显示“Server:Apache/2.2″

ServerTokens Min d显示“Server:Apache/2.2.17″

ServerTokens OS 显示 “Server:Apache/2.2.17 (Unix)”

ServerTokens Full 显示 “Server:Apache/2.2.17 (Unix) PHP/5.3.5″ (如果你这指定任何的值,这个是默认的返回信息)

除了上面10个apache的安全建议,你还必要确保你的UNIX/Linux操作系统的安全。如果你的操作系统不安全,那么只是确保apache 的安全就没有任何意义了。通常的我们要保持apache版本的更新,最新的apahce版本会修复所有已知的安全问题。还有就是要确保时常查看 apache日志文件。

Popularity: 3%

Linux VPS下简单解决CC攻击

一,准备工作

1,登录进VPS控制面板,准备好随时重启VPS。

2,关闭Web Server先,过高的负载会导致后面的操作很难进行,甚至直接无法登录SSH。

3,以防万一,把设置的Web Server系统启动后自动运行去掉。

(如果已经无法登录进系统,并且重启后负载过高导致刚刚开机就已经无法登录,可联系管理员在母机上封掉VPS的IP或80端口,在母机上用虚拟控制台登录进系统,然后进行2&3的操作,之后解封)

二,找出攻击者IP

1,在网站根目录建立文件ip.,写入下面的内容。

 

<?php 

$real_ip = getenv(‘HTTP_X_FORWARDED_FOR’);

if(isset($real_ip)){

shell_exec(“echo $real_ip > real_ip.txt”);

shell_exec(“echo $_SERVER['REMOTE_ADDR']> proxy.txt”);

}else{

shell_exec(“echo $_SERVER['REMOTE_ADDR'] > ips.txt”)”

}

echo’服务器受到攻击,正在收集攻击源,请在5分钟后访问本站,5分钟内多次访问本站有可能会被当作攻击源封掉IP。谢谢合作!’;

?>

2,设置伪静态,将网站下的所有访问都rewrite到ip.php。

 

Nginx规则: 

(.*) /ip.php;

Lighttpd规则:

url.rewrite = (

“^/(.+)/?$” => “/ip.php”

)

3,启动Web Server开始收集IP

进行完1和2的设置后,启动Web Server,开始记录IP信息。

收集时间建议为3到5分钟,然后再次关闭Web Server。

real_ip.txt,这个文件中保存的IP有80%以上都相同的,这个IP就是攻击者实施攻击的平台的IP。

proxy.txt,这个文件中保存的是攻击者调用的代理服务器的IP,需要封掉。

ips.txt,这里记录的是未表现出代理服务器特征的IP,根据访问次数判断是否为攻击源。

三,对上一段的补充

如果VPS上启用了WEB日志,可以查看日志文件的增长速度来判断是哪个站点被攻击。

如果没有启用日志,并且站点数量很少,临时启用日志也很方便 。

如果没有启用日志,并且站点数量过多,可以使用临时的Web Server配置文件,不绑定虚拟主机,设置一个默认的站点。然后在ip.php里加入下面一行

 

shell_exec(“echo $_SERVER['HTTP_HOST’]>> domain.txt”);

domain.txt里将保存被访问过的域名,被CC攻击的站点将在里面占绝大多数。

四,开始封堵IP

建立文件ban.php

 

<? 

$threshold = 10;

$ips = array_count_values(file(‘ips.txt’));

$ban_num = 0;

foreach($ips as $ip=>$num){

if($num > $threshold){

$ip = trim($ip);

$cmd = “iptables -I INPUT -p tcp –dport 80 -s $ip -j DROP”;

shell_exec($cmd);

echo “$ip baned! ”;

$ban_num ++;

}

}

$proxy_arr = array_unique(file(‘ips.txt’))’

foreach($proxy_arr as $proxy){

$proxy = trim($proxy);

$cmd = “iptables -I INPUT -p tcp –dport 80 -s $ip -j DROP”;

shell_exec($cmd);

echo “$ip baned! ”;

$ban_num ++;

}

echo “total: $ban_num ips ”;

?>

用下面的命令执行脚本(确保php命令在PATH中)

php ban.php

这个脚本依赖于第二段中ips.txt里保存的结果,当其中记录的IP访问次数超过10次,就被当作攻击源给屏蔽掉。如果是代理服务器,则不判断次数直接 封掉。

封完IP之后,把所有的网站设置恢复正常,站点可以继续正常运行了。

五,一些细节

为保持对操作过程的描述尽量简洁,没有在上面的内容中加入过多的解释,留在这段统一讲述。

1,关于“代理服务器”的一些本质

两个与TCP&HTTP协议相关的值,REMOTE_ADDR和HTTP_X_FORWARDED_FOR。

(1)REMOTE_ADDR总是取离Web服务器最接近的一台主机的IP,如果没有使用代理,这个值就是访问者本身的IP,如果使用了代理,这个值就是 代理服务器的IP,如果通过多个代理服务器进行的连接,这个值就是到达Web服务器前最后一台代理服务器的IP。

REMOTE_ADDR是由TCP/IP层决定的,不能修改不能伪造。

(2)HTTP_X_FORWARDED_FOR,因为这个值是属于HTTP部分,而不是TCP/IP,所以这个值不管是什么,都不影响数据的传 输。事实 上,一般情况下,如果是访问者直接访问Web服务器,这个值为空;通过透明代理的时候,这个值会被代理服务器设置为访问者的IP;通过匿名代理连接时,这 个值可能为代理服务器的IP也可能是空的也有可能是随机的。

HTTP_X_FORWARDED_FOR可以被任意修改。大多数代理服务器都是透明代理,也就是说,会把这个值设置为最原始访问者的IP。

2,关于解决CC攻击的层面问题

按处理效率从高到低排列。

(由于本文是针对VPS服务器所写,而VPS简单来说就是服务器的低端替代品,内存和CPU等资源普遍偏低,当然是处理效率越高越好。)

(1)网络传输层。也就是本文所用的iptables,这个工具本身是工作于系统内核,在建立网络连接时直接把攻击者的连接给否了。在这一层面上将攻击源处理掉后,消耗掉的资源几乎可以忽略不计。

(2)Web Server层,大多数Web Server都可以设置禁止访问的IP。在这一层上解决的意义和上面的差不多,但是效率要差些。

(3)脚本层,从脚本程序上制定适合于本身的策略过滤掉攻击源。网络上有很多流传的在这一层面的解决方案,但是不太适用于VPS,而且设置难度可能要增加几倍或者几十倍。

3,为什么不是从日志收集IP?

主要是考虑两点,一是大多数VPS使用者都因为硬盘空间过小,经常清除日志很麻烦,而直接禁止了日志。

二是如果从日志收集IP,脚本复杂程度要高很多,而且可能要根据情况做些调整,考虑到将要读到本文的人大多数都未必掌握更多的技术,本文的目的就是按部就班的依本文进行操作,即可解决问题。

Popularity: 3%

返回顶部