2009年3月31日星期二

Apache 用户授权和访问控制

修改httpd.conf
打开重写模块

LoadModule rewrite_module modules/mod_rewrite.so

添加重写目录

<Directory /home/httpd/html>
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Options Includes FollowSymLinks Indexes
AllowOverride All
# 注意AllowOverride 一定要设置为All,这样后面的.htaccess文件才会起作用
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
# <Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
# Order deny,allow
# Deny from all
# </Limit>
</Directory>

#指定配置存取控制权限的文件名称

AccessFileName .htaccess


创建.htaccess文件內容
要控制某目录的访问权限必须建立一访问控制文件,文件名前面指定的"htaccess",其内容格式如下:

AuthUserFile 用户帐号密码文件名
AuthGroupFile 群组帐号密码文件名
AuthName 画面提示文字
AuthType 验证方式

密码验证方式


用户验证方式AuthType目前提供了Basic和Digest两种。
密码检验设定方法与httpd.conf中的相关设定相同。 eg:

AuthUserFile /etc/secure.user
AuthName admin
AuthType Basic
<Limit GET>
require valid-user
</Limit>


建立用户密码文件
如果你是第一次创建用户密码,命令格式如下:

htpasswd -c 密码文件名 用户名称

在上面的例子中,我们将用户密码文件放到了/etc/secure.user文件中,所以这里应按照如下进行操作:

htpasswd -c /etc/secure.user test

程序会提示你输入两次用户的口令,然后用户密码文件就已经创建sword这个用户也添加完毕了。

如果要向密码文件中添加新的用户,按照如下命令格式进行操作:

htpasswd 密码文件 用户名称

这样,重新启动Apache后,访问该WEB目录时就会有一个对话框弹出,要求输入用户名及用户口令了。

减少访问控制对Apache性能的影响
频繁的使用访问控制会对Apache的性能产生较大的影响,减少这种影响最简单也是最有效的方法之一就是减少.htaccess文件的数目,这样可以避免Apache对每一个请求都要按照.htaccess文件的内容进行授权检查。它不仅在当前的目录中查找.htaccess文件,它还会在当前目录的父目录中查找。

/
/usr
/usr/local
/usr/local/etc
/usr/local/etc/httpd
/usr/local/etc/httpd/htdocs
/usr/local/etc/httpd/htdocs/docs

通常在根目录下没有htaccess文件,但Apache仍然会进行例行检查以确定该文件确实不存在。这是影响很影响服务器工作效率的事情。下面的方法可以消除这个讨厌的过程:将AllowOverride选设置为None,这样 Apache就会检查.htaccess文件了。将/根目录的 AllowOverride选项设为None,只将需要进行访问控制的目录下的AllowOverride选项设置为all,如下面的例子中将/根目录的 AllowOverride 选项关闭了,只打开了/usr/local/etc/httpd/htdocs目录下的AllowOerride选项,这样,系统就只在 /usr/local/etc/httpd/htdocs中检查.htaccess文件,达到的提高服务效率的目的。

<Directory />
AllowOverride None
</Directory>

<Directory /usr/local/etc/httpd/htdocs>
AllowOverride All
</Directory>


如果除了根目录以外,还有其它存放WWW文件的目录,你也可以采取同样的方法进行设置。比如:如果你使用UserDir来允许用户访问自己的目录,AllowOverride的设置如下:

<Directory /home/*/public_html>
AllowOverride FileInfo Indexes IncludesNOEXEC
</Directory>

防止用户访问指定的文件
系统中有一些文件是不适宜提供给WWW用户的,如:.htaccess、htpasswd、*.pl等,可以用达到这个目的:

<Files .htaccess>
order allow,deny
deny from all
</Files>

用户访问控制三个.htaccess文件、.htpasswd和.htgroup(用于用户授权) ,为了安全起见,应该防止用户浏览其中内容,可以在httpd.conf中加入以下内容阻止用户对其进行访问:

<Files ~"/.ht">
Order deny, allow
Deny from all
</Files>

这样这三个文件就不会被用户访问了。

限制某些用户访问特定文件
可以对目录进行约束,要限制某些用户对某个特定文件的访问可以使用,比如:不允许非domain.com域内的用户对/prices/internal.html进行访问,可以用如下的设置:

<Location /prices/internal.html>
order deny,allow
deny from all
allow from .domain.com
</Location>

如果你要授于相应权限的机器没有公开的域名,请在你的/etc/hosts文件中,将其IP地址映射到某个指定的名称,然后在Location中对其进行设置,否则该选项是不起作用的。

接受来自特定链接的访问
eg:只让所有来自 http://www.sina.com.cn/* 的链接的用户进入此目录,由其它链接来的访客都不得进入; " * "表示此网站底下所有的链接。其中的 http://www.sina.com.cn/* 也可以是:http://202.106.184.200/* 或是指定文件 http://www.sina.com.cn/news.html

.htaccess文件的内容如下:

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName ExampleAllowFromSpecificURL
AuthType Basic
<Limit GET>
order deny,allow
deny from all
referer allow from http://www.sina.com.cn/*
</Limit>

2009年3月27日星期五

HTML的meta

项目做完,闲坐无聊,偶然间发神经想到HTML的META标签,google一下,⊙﹏⊙b汗,一大遍,反正没事情,就整理了一下...

META标签是HTML语言HEAD区的一个辅助性标签,它位于HTML文档头部的标记之间,它提供用户不可见的信息。meta 主要为分HTTP标头信息(HTTP-EQUIV)和页面描述信息(NAME)。标头信息包括文档类型、字符集、语言等浏览器正确显示网页的信息及处理动作;网页描述如内容的关键字、摘要、作者和定义robots行为等,为搜索引擎索引提供信息。


http-equiv
1. Content-Type和Content-Language
[html]
<meta http-equiv="Content-Type" Content="text/html; Charset=utf-8" />
<meta http-equiv="Content-Language" Content="zh-CN" />
[/html]

说明网页类型和字符编码信息。

2. Expires
[html]
<meta http-equiv="Expires" Content="Wed, 26 Feb 1997 08:21:57 GMT" />
[/html]
指定网页在缓存中的过期时间。注意:必须使用GMT的时间格式或直接设为0。

3. Pragma(Cache)
[html]
<meta http-equiv="Pragma" Content="No-cache" />
[/html]
[/html]
禁止浏览器从本地机的缓存中调阅页面内容, 即网页不保存在缓存中,每次访问都刷新页面。

4. Refresh
[html]
<Meta http-equiv="Refresh" Content="30">
<meta http-equiv="Refresh" Content="30; Url=http://********/" />
[/html]
让网页多长时间30(秒)后刷新自己,第二个是30(秒)后让网页自动链接到url。
谨慎使用跳转,否则可能会被搜索引擎认为作弊,不利于网站优化。如果使用meta跳转,时间最好大于10秒。请看对搜索引擎友好的301跳转。

5. Window-target
[html]
<meta http-equiv="Window-target" Content="_top" />
[/html]
强制页面在当前窗口以独立页面显示,来防止别人在框架里调用你的页面。Content选项:_blank、_top、_self、_parent

6. Pics-label (网页RSAC等级评定)
[html]
<META http-equiv="Pics-label" Contect="(PICS-1.1'http://www.rsac.org/ratingsv01.html'
I gen comment 'RSACi North America Sever' by 'inet@microsoft.com'
for 'http://www.microsoft.com' on '1997.06.30T14:21-0500' r(n0 s0 v0 l0))" />
[/html]

IE的Internet选项中有一项内容设置,可以防止浏览一些受限制的网站,而网站的限制级别就是通过该参数来设置的。注意:不要将级别设置的太高。 RSAC的评估系统提供了一种用来评价Web站点内容的标准。用户可以设置Microsoft Internet Explorer(IE3.0以上)来排除包含有色情和暴力内容的站点。上面这个例子中的HTML取自Microsoft的主页。代码中的(n 0 s 0 v 0 l 0)表示该站点不包含不健康内容。级别的评定是由RSAC,即美国娱乐委员会的评级机构评定的,如果你想进一步了解RSAC评估系统的等级内容,或者你需要评价自己的网站,可以访问RSAC的站点:http://www.rsac.org/。

7. Page-Enter、Page-Exit
[html]
<Meta http-equiv="Page-Enter" Content="blendTrans(Duration=0.5)">
<Meta http-equiv="Page-Exit" Content="blendTrans(Duration=0.5)">
[/html]
blendTrans是动态滤镜的一种,产生渐隐效果(单位:秒) 。

另一种动态滤镜RevealTrans也可以用于页面进入与退出效果,取值为0-23:
0 矩形缩小
1 矩形扩大
2 圆形缩小
3 圆形扩大
4 下到上刷新
5 上到下刷新
6 左到右刷新
7 右到左刷新
8 竖百叶窗
9 横百叶窗
10 错位横百叶窗
11 错位竖百叶窗
12 点扩散
13 左右到中间刷新
14 中间到左右刷新
15 中间到上下
16 上下到中间
17 右下到左上
18 右上到左下
19 左上到右下
20 左下到右上
21 横条
22 竖条
23 以上23种随机选择一种

8. MSThemeCompatible(XP主题)
[html]
<Meta http-equiv="MSThemeCompatible" Content="Yes">
[/html]
关闭 xp 的蓝色立体按钮系统显示样式

9. IE6
[html]
<Meta http-equiv="IE6" Content="Generator">
[/html]
页面生成器generator,是ie6(用什么东西做的,类似商品出厂厂商)。

10. Content-Script-Type (脚本相关)
[html]
<Meta http-equiv="Content-Script-Type" Content="text/javascript">
[/html]
是近来W3C的规范,指明页面中脚本的类型。

11. MSSmartTagsPreventParsing
[html]
<meta name="MSSmartTagsPreventParsing" content="TRUE">
[/html]
防止微软页面编辑软件在页面上自动添加标签,保证代码原汁原味

12. Set-Cookie
[html]
<Meta http-equiv="Set-Cookie" Content="cookievalue=xxx; expires=Wednesday,21-Oct-98 16:14:21 GMT; path=/">
[/html]
浏览器访问某个页面时会将它存在缓存中,下次再次访问时就可从缓存中读取,以提高速度。当你希望访问者每次都刷新你广告的图标,或每次都刷新你的计数器,就要禁用缓存了。通常HTML文件没有必要禁用缓存,对于ASP等页面,就可以使用禁用缓存,因为每次看到的页面都是在服务器动态生成的,缓存就失去意义。如果网页过期,那么存盘的cookie将被删除。注意:必须使用GMT的时间格式或直接设为0。


name
name是描述网页的,对应于Content(网页内容),以便于搜索引擎机器人查找、分类(目前几乎所有的搜索引擎都使用网上机器人自动查找meta值来给网页分类)。name的value值指定所提供信息的类型。有些值是已经定义好的。例如description(说明)、keyword(关键字)、 refresh(刷新)等。还可以指定其他任意值,如:creationdate(创建日期) 、document ID(文档编号)和level(等级)等。

1. keywords
[html]
<meta name="Keywords" Content="word1,word2..." />
[/html]
各关键词间用英文逗号“,”隔开。META的通常用处是指定搜索引擎用来提高搜索质量的关键词。描述此文档内容的关键词,宜选用稍冷的组合词,六组左右; 搜索引擎对keywords比较敏感,作用不是很大,如果堆积关键词或名不符实,则可能会被搜索引擎惩罚,所以宁缺勿滥。
[html]
<meta name="Kyewords" Lang="en" Content="vacation,greece,sunshine" />
<meta name="Kyewords" Lang="FR" Content="vacances,grè:ce,soleil" />
[/html]
当数个META元素提供文档语言信息时,搜索引擎会使用lang特性来过滤并通过用户的语言优先参照来显示搜索结果。

2. Description
[html]
<meta name="Description" Content="网页信息的描述" />
[/html]
Description用来告诉搜索引擎你的网站主要内容。因搜索引擎不同,以100字左右为宜。摘要需对不同页面给予不同的描述,明确包含标记性事实。

3. Robots (机器人向导)
[html]
<meta name="Robots" Content="All|None|Index|Noindex|Follow|Nofollow" />
[/html]
许多搜索引擎都通过放出robot/spider搜索来登录网站,这些robot/spider就要用到meta元素的一些特性来决定怎样登录,当然有的搜索引擎不支持这个属性。Robots用来告诉搜索机器人哪些页面需要索引,是否跟踪链接。Content的参数有all、none、index、 noindex、follow、nofollow。默认是all。
all:文件将被检索,且页面上的链接可以被查询;
none:文件将不被检索,且页面上的链接不可以被查询;(和 "noindex, nofollow" 起相同作用)
index:文件将被检索;(让robot/spider登录)
follow:页面上的链接可以被查询;
noindex:文件将不被检索,但页面上的链接可以被查询;(不让robot/spider登录)
nofollow:文件将不被检索,页面上的链接可以被查询。(不让robot/spider顺着此页的连接往下抓取)
meta robots可以逐页控制对网站的访问,还可在robots.txt文件中声明URL,控制spider对它们的抓取。

4. Generator
[html]
<Meta name="Generator" Content="PCDATA">
[/html]

5. revisit-after
[html]
<meta name="revisit-after" CONTENT="7 days" />
[/html]
重访时间。有时页面不是经常更新或减轻服务器的负担,可以设置一个搜索引擎机器人下次重访的时间,当然如果时间过短,搜索引擎机器人并不会按这个时间准时重访,它只会在大于这个时间访问。

6. Author
[html]
<meta name="Author" Content="" />
[/html]
标注网页的作者或制作组,可以是名字,或Email

7. Copyright
[html]
<meta name="Copyright" Content="All Rights Reserved" />
[/html]
scheme
scheme是根据指定的方式(scheme)来解释对象(name)的值(content)。
[html]
<META scheme="USA" name="date" content="04-05-1962">
[/html]
在美国,日期格式是MM-DD-YYYY
[html]
<META scheme="Europe" name="date" content="05-04-1962">
[/html]
在欧洲,日期格式是DD-MM-YYYY

Base
[html]
<Base href="http://********/" target="_blank">
[/html]
插入网页基链接属性。 网页上的所有相对路径在链接时都将在前面加上“http://********/”。
"_blank"是链接文件在新的窗口中打开
“_parent”是链接文件将在当前窗口的父级窗口中打开
“_self”链接文件在当前窗口(帧)中打开
“_top”链接文件全屏显示。

Link
在文档中声明使用外接资源(比如CSS)时使用此标签,O(∩_∩)O~,我暂时查到它的内容如下:
A. href -- 指定需要加载的资源(CSS文件)的地址URI
B. media -- 媒体类型,参见CSS教程
C. rel -- 指定链接类型(relationship link), 描述当前页面与href所指定文档的关系.
D. rev -- 指定链接类型(reverse link), 描述了href所指定文档与当前页面的关系.
E. type -- 包含内容的类型,一般使用type="text/css"
rel与rev属性相同,它们都是属于LinkTypes属性。
alternate -- 定义交替出现的链接
appendix -- 定义文档的附加信息
bookmark -- 书签
chapter -- 当前文档的章节
contents
copyright -- 当前文档的版权
glossary -- 词汇
help -- 链接帮助信息
index -- 当前文档的索引
next -- 记录文档的下一页.(浏览器可以提前加载此页)
nofollow -- 不被用于计算PageRank
prev -- 记录文档的上一页.(定义浏览器的后退键)
section -- 作为文档的一部分
start -- 通知搜索引擎,文档的开始
stylesheet -- 定义一个外部加载的样式表
subsection -- 作为文档的一小部分

1.
[html]
<Link href="***8.ico" rel="Shortcut Icon">
[/html]

2. CSS
[html]
<link rel="stylesheet" type="text/css" href="style.css" />
[/html]

3. alternate 属性值,可以通过此值,设计交替出现的链接

定义两种不同的样式,用户可以通过浏览器选择样式(ie不支持此属性)
[html]
<link rel="stylesheet" type="text/css" title="blue" href="dreamblue.css" />
<link rel="alternate stylesheet" type="text/css" title="red" href="dreamred.css" />
[/html]

可以通过http://www.***.com/feed/读取http://www.***.com/的内容
[html]
<link rel="alternate" type="application/rss+xml" href="http://www.***.com/feed/" />
[/html]
提高搜索点击率的旁门左道:
1. 写keywords的禁忌是:
不要用常见词汇。例如www,homepage,net,web等。
不要用形容词,副词。例如最好的,最大的等。
不要用笼统的词汇,要尽量精确。例如不用"编程语言",改用"PHP"等

2. 寻找合适的关键词的一个技巧是:到lycos,Alta,infoseek等搜索引擎,搜索与你内容相仿的网站,查看排名前十位的网站的meta关键字。O(∩_∩)O~,当然可以借鉴一下...

3. 为了增加关键词的密度,将关键字隐藏在页面里(将文字颜色定义成与背景颜色一样)。
4. 在图象的alt注释语句中加入关键字。

5.
[html]
<IMG SRC="xxx.gif" Alt="keywords">
[/html]
6. 利用HTML的注释语句,在页面代码里加入大量关键字。

2009年3月22日星期日

PHP cookie和session的分析

无法查看这则摘要。请 点击此处查看博文。