补充资料
本网络中使用LINUX服务器,web服务器是由APACHE搭建,IP地址为192.168.1.5,后台页面为/admin/login.jsp . 如何设置后台页面LOGIN.JSP只允许192.168.1.10访问。而前台页面所有人都可以访问?
请回答的详细点,比如在APACHE的哪个部分添加怎样的字段。 谢谢
我记得论坛有帖子说怎么设置访问权限的.搜索下......... 以下供参考,比较忙没有时间整理.......
1、修改http.conf
假设你想控制权限的目录的不同访问权限, 你可以在与之间加入一行: AllowOverride All
意思是目录的访问权限由该目录下的.htaccess文件来控制,而且不同目录的权限策略可互相覆盖。
2、编辑你想要控制的目录下的.htaccess文件
假设你的phpmyadmin目录在progra*/apache*/htdocs下,你可以这样在phpmyadmin目录下创建一个.htaccess文件,内容如下:
AuthUserFile progra*/apache*/apache/pass/pwdPhp
AuthType Basic
AuthName "Database Security Zone"
3. 生成用户密码文件
有一个用户密码生成程序:htpasswd(在program*/apache*/bin下), 它可以加入用户密码信息到指定的文件中,如/usr/local/apache/pass/pwdPhp. 我的用户密码文件内容如下: htpasswd -c f:/.htaccess test
通过.htacess文件设置目录访问权限.通常我们可以在程序里来进行验证,也就是通过php写入http协议的头文件。而使用apache控制更有效。有关文章可以参考apache的官方网站的文档。(www.apache.org) 下面是我的配置(注意的是,因为在windows下的fat32/ntfs文件系统不支持.htaccess类型的文件名,所以我们需要改写该文件名。) 首先更改apache的配置文件httpd.conf 找到下面一行 AccessFileName .htaccess改成AccessFileName user.htaccess(当然后面的名字可以是其他的,只要不以.开头即可。但这样写更容易记忆和读取) 然后是接下来的正则匹配也要改找到 <FilesMatch "^\.ht">
Order allow,deny
Deny from all
< /FilesMatch> 改成:<FilesMatch "^user\.ht"> #这里因为要匹配passwd文件,所以在window下你的密码文件也不能用.开头。统一命名为user.htpasswd好了。呵呵
Order allow,deny
Deny from all
< /FilesMatch> 再接下来是找到: AllowOverride None 这行,将起注释掉(前面加#)然后跟着添加两行,成为这样: # AllowOverride None AllowOverride FileInfo AuthConfig Limit
Options MultiViews SymLinksIfOwnerMatch IncludesNoExec 好了,到现在我们配置结束,然后重起apache服务,之后在需要设置访问权限的目录中防入user.htaccess文件,在他里面写如认证的内容即可。 如:在www/mytest 目录下生成user.htaccess文件内容如下: <Limit GET POST OPTIONS>
Deny from all
Allow from 10.29.100.0/24 #只允许10.29.100网段的用户访问该目录。
< /Limit>AuthUserFile /home/user.htpasswd #登陆权证验证的用户密码文件
#AuthGroupFile /dev/null #验证组文件
AuthName "login information"
AuthType Basic #验证类型#<Limit GET>
#require user newsadmin
#</Limit> 这样我们再通过命令行(cmd)生成一个用户密码文件D:\Apache\bin>htpasswd -c user.htpasswd mytestAutomatically using MD5 format.
New password: ******
Re-type new password: ******
Adding password for user mytest 再通过浏览器访问该目录时就需要首先输入验证的用户名和密码,正确后如果您的ip网段在指定范围内则出现访问内容,否则访问被拒绝。 当然这样会对服务器的效率有所损失,因为每次访问目录都要先查看是否有验证文件存在。当然也可以把验证段直接写在httpd.conf 内,但这样写的好处是可以随时更改验证条件而不用重起服务器。而且可读性好。
.htaccess文件是Apache服务器上的一个设置文件。它是一个文本文件,可以使用任何文本编辑器进行编写。. htaccess文件提供了针对目录改变配置的方法,即通过在一个特定的文档目录中放置一个包含一个或多个指令的文件(.htaccess文件),以作用于此目录及其所有子目录。.htaccess的功能包括设置网页密码、设置发生错误时出现的文件、改变首页的文件名(如index.html)、禁止读取文件名、重新导向文件、加上MIME类别、禁止列目录下的文件等。
在需要针对目录改变服务器的配置,而对服务器系统没有root权限时,应该使用.htaccess文件。如果服务器管理员不愿意频繁修改配置,则可以允许用户通过.htaccess文件自己修改配置,尤其是ISP在一台机器上提供多个用户站点,而又希望用户可以自己改变配置的情况下,一般会开放部分.htaccess的功能给使用者自行设置。
注意,.htaccess是一个完整的文件名,不是***.htaccess或其它格式(当然也有管理员把其设置成其它名字,但一般都是使用.htaccess)。另外,上传.htaccess文件时,必须使用ASCⅡ模式,并使用chmod命令改变权限为:644 (RW_R__R__)。每一个放置.htaccess的目录和其子目录都会被.htaccess影响。例如,在/abc/目录下放置了一个. htaccess文件,那么/abc/和/abc/def/内所有的文件都会被它影响,但/index.html不会被它影响,这一点是很重要的。
实现密码保护
1.建立.htpasswd文件
首先在要设置存取控制的目录(如htdocs)下建立一个文件,文件名可以自行设定,一般服务器都会设置为.htpasswd,该文件是不能由HTTP读取的。.htpasswd文件中的每一行代表一个使用者,使用者的名字及经过加密的密码以冒号:分隔。
2..htaccess文件实现保护
.htaccess文件的内容如下: authtype basic
authuserfile /usr/home/***/htdocs/.abcname1
authgroupfile /usr/home/***/htdocs/.abcname2
authname information
< limit get post>
require valid-user
< /limit>
其中第二行和第三行中的***可以改为个人的FTP登录名。.abcname1和.abcname2可以是任意的文件名,如.htpasswd、.htpass,但不能是.htaccess。将.htaccess上传到要进行密码保护的目录(如htdocs)中。
.htaccess文件最后的“require”告诉服务器哪些用户可以进入。require valid-user是指只要是.htpasswd中的任何一个都可以进入。也可以指定名单上的某人或某几人可以通过,使用require user username或require user username1 username2 username3。还可以指定某组人可以通过,使用require group groupname。
3.增加新的许可用户
进入htdocs目录,在命令行状态输入以下命令生成.abcname1文件。 echo > .abcname1
/var/www/bin/htpasswd .abcname1 abc
abc表示要增加的用户名。输入此命令后,系统会提示输入此用户密码,这样该用户名就生效了。以后如要再增加用户,运行第二行的命令时换一个用户名即可。如果这个用户名存在,则会提示修改密码。
4.建立允许访问的组
组的设置方法是建立一个名为.htgroup的文本文件,内容如下: groupname1: username1 username2 username3
groupname2: username1 username3 username4
并在.htaccess中加上“AuthGroupFile /absolute/path/.htgroup”。以ASCⅡ模式上传所有文件后,该目录中的所有文件都会被保护起来。
设置错误文件
如果希望在找不到文件时不出现“找不到网页”的页面提示,而是打开另一个HTML文件,方法也很简单。首先编写一个新的页面,然后用文本编辑器打开.htaccess,在文件最后加上:ErrorDocument 404 404.html。这里,404.html是错误文件的名字,即所显示的页面;404是错误代码。一般常见的错误代码和所代表的错误原因如下: 401 Authorization failed 授权失败,即密码错误。
403 Access denied 存取错误,即不可以读取该文件。
404 File not found 找不到文件。
500 Internal Server Error
服务器内部错误,可能是Web服务器本身存在问题,也可能是编写的程序出错。
禁止读取文件
如果将某些内容如密码,存放在一个文件中,那么别人只需知道该文件的对应位置,就可以一目了然,这样太不安全。其实完全可以不改变其它设置,也不用将文件移到其它地方就可解决这个问题,只需在.htaccess文件中加入以下几行: <Files filename.ext>
order allow,deny
deny from all
< /Files>
如果系统安装的是Apache 1.3以后的版本,更可以支持regular expression的filesmatch。 <filesmatch "\.tmp">
order allow,deny
deny from all
< /filesmatch>
files和filesmatch表示只对符合要求的部分文件生效。“order deny,allow”表示先找出禁止(deny)的,然后去找许可的(allow)。如果将它们的顺序颠倒“order allow,deny”则表示先找出许可的,后才去找禁止的。“deny from all”则表示全部IP地址都不许可。相对地,“allow from all”表示全部都允许。可以这样设置: order allow,deny
allow from all
deny from 111.222
deny from 111.222是指禁止所有以111.222开始的IP地址(如111.222.0.1)。除了设置IP地址外,也可以设置成hostname(如: ***.com)。“Files”和“Filesmatch”的用途很多,不但可以设置deny,也可以设置个别文件的密码,如: <files 123>
require user 123
< /files>
< files abc>
require user abc
< /files>
使用.htaccess文件也会存在一些问题,比如性能。如果使用.htaccess文件,则Apache需要在每个目录中查找该文件,还必须在所有更高级的目录中查找它,另外,每次请求一个页面时,也都需要读取.htaccess文件。因此,允许使用.htaccess文件都会导致性能的下降。
例如,对/usr/hq/htdocs中页面的请求,Apache必须查找以下文件: /.htaccess
/usr/.htaccess
/usr/hq/.htaccess
/usr/hq/htdocs/.htaccess
总的来说,通过.htaccess来保护网站更为方便和安全。因为它不像利用程序实现密码保护时,有可能通过猜测的方法获取密码。利用.htaccess文件实现密码保护,一般是很难破解的。鉴于.htaccess方式的优缺点,读者可以根据具体的情况选择适合的方法来保证网站的安全。