站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
WordPress子目录中的.htaccess文件
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
<span style="border:1px solid #000; text-align:center; float:right; padding:6px;"><strong>导航:</strong> [[WordPress进阶课题|上一页]] | {{Template:WordPress导航}}</span> <div style="clear:both;"></div> 在[[计算机]]的文件系统中,每个文件和目录各自都配有许可权限,这些权限规定了哪些文件是可读的,哪些是可写入的,哪些是可执行的。 许可权限系统是一种保护用户网站安全性的基本措施。默认WordPress安装目录中,每个文件和文件夹(如目录)都带有相应的许可权限设置,它利用[[服务器]]中已有的许可限制设置来决定尚未设定权限的设置,[http://www.wordpress.la/codex-%E6%9B%B4%E6%94%B9%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90.html 非常安全]。 尽管如此,有时却只能在安全和方便中二者择其一:有些[http://www.wordpress.la/plugins.html WordPress插件]为了保证读写文件时的方便,对目录的安全设置会相对宽松。 '''示例''' WordPress中有些插件能够上传、编辑并管理图片文件。在插件的选项栏中进行设置后,这些插件就可以读取并写入基本图像目录。为保证目录在各个服务器中都能正常运行,运行php/服务器的程序要具备基本图像目录的写入权限(权限777)。尽管如此,目录权限为777意味着某种安全漏洞:恶意访问者可以上传脚本到目录中并攻击网站。 从安全角度考虑,具有自由写入权限的目录也应采取保护措施,哪怕只是很小的保护措施。 开始时可以设定744等较高的权限,然后逐步将权限降到合适的等级。尽量只在必要时暂时使用777权限。 ==suEXEC是什么?== 通过[http://httpd.apache.org/docs/trunk/suexec.html bsuEXEC]功能,[[Apache]]用户可以在自己的用户ID(不同于调用web服务器的用户ID)下运行CGI和SSI程序。正常情况下执行[[CGI]]或SSI程序的用户ID即调用web服务器的用户ID。 如果使用得当,suEXEC能够极大地降低用户开发运行个人CGI和SSI所带来的安全风险。但如果配置不当,suEXEC不仅可能带来很多问题,甚至可能生成新的计算机安全漏洞。对那些不了解管理用户标识符程序以及相应的安全问题的用户,我们不推荐使用suEXEC。 '''问题''' 如何在保护WordPress安装目录的同时享受WordPress插件所带来的附加功能? '''用.htaccess文件保护个人目录''' 用.htaccess文件可以解决上面提出的问题。你可以在任何许可权限较为宽松(如760,766,775以及777)的目录中添加.htaccess文件,也可以阻止某个目录和它所有子目录中的脚本执行,还可以禁止某一类型文件外的其它所有文件的写入。 '''保护特定文件类型''' 以下代码段可禁止在目录中使用.jpeg, .jpg, .png. 以及 .gif文件外所有文件: <Files ^(*.jpeg|*.jpg|*.png|*.gif)> order deny,allow deny from all </Files> 下面这个代码示例用<FilesMatch>指令来指定能够被访问的文件类型。将“Allow”改为“Deny”可以拒绝所有访问。 <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|mp3|mpg|mp4|mov|wav|wmv|png|gif|swf|css|js)$"> Allow from All </FilesMatch> ==禁止脚本执行== 浏览器发送请求时,使用以下代码可以禁止执行.pl, .cgi 或者 .php等可执行脚本。通过以下代码,Web浏览器将这些可执行文件当作文本文件来处理。这些文件会在[[浏览器]]窗口中以普通文本形式显示出来。 AddType text/plain .pl .cgi .php Options -Exec CGI指令是.htaccess文件中一个作用较广泛的指令。该指令决定.htaccess文件中哪些内容是其它Apache模块所允许的。-ExecCGI规定,如果文件被记录由 cgi-script处理器进行处理,该文件将不允许出现。 第二行中的AddHandler指令列举了cig-scripts的所有文件扩展名,所有尝试获取这些文件的请求都会被返回403错误——访问被拒绝。 Options -ExecCGI AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi 最后你还可以使用一个指令来命令文件类型(非处理器)。该指令删除所有与扩展名相关的处理器和动作,然后以文本/普通形式使用文件,但该指令不会改写之前的示例范围。 <FilesMatch "\.(php|pl|py|jsp|asp|htm|shtml|sh|cgi)$"> ForceType text/plain </FilesMatch> ==远程控制vs本地请求== '''什么时候使用REDIRECT_STATUS环境变量''' 在下面的代码中,我们利用AddHandler和 Action指令来为Apache设置REDIRECT_STATUS环境变量。这样做的原因是,.php文件请求被发送时,Apache不仅要处理该文件,还要将文件转换为/cgi-bin/php.cgi脚本。执行转换操作的可以是一个真正的php-cgi解析器,也可以仅仅是一个可执行php解析器的shell脚本。 AddHandler php-cgi .php Action php-cgi /cgi-bin/php.cgi 下面的代码建立了一个环境变量PHPRC,然后执行php.cgi文件。 #!/bin/sh export PHP_FCGI_CHILDREN=3 export PHPRC=/home/custom-ini exec /home/bin/php.cgi 下面的代码所执行的php解析器(如果解析器存在)位于执行脚本的当前路径中: #!/bin/sh exec php 你可以用它来锁定htaccess目录和文件,甚至可以锁定带有REDIRECT_STATUS环境变量的请求。这是因为REDIRECT_cgi环境变量只赋值给本地请求。 注意,请求/cgi-bin/php.cgi 文件的是Apache,因此请求才会被定义为本地请求。如果访问的页面以.php结尾,REDIRECT_变量将在apache把它的控制权转交给/cgi-bin/php.cgi文件时赋值给给apache。因此,如果/cgi-bin/php.cgi文件不具有REDIRECT_STATUS变量赋值,你可以锁定所有对/cgi-bin/php.cgi文件的请求。 '''REDIRECT_STATUS''' REDIRECT_STATUS变量起源于内部请求,该变量最初(REDIRECT_STATUS变量的历史甚至早于php)被用于处理ErrorDocument(错误文件)。ErrorDocument一般由用户行为触发,例如,用户请求的页面不存在会导致404错误页面,但之后将用户的请求重定向到ErrorDocument的则是Apache,这类似于为.php文件重定向。ErrorDocument的这一特征使它能够从导致错误的请求中意识到环境设置和环境变量的存在。REDIRECT_STATUS只是REDIRECT_众多变量中的一个,几乎所有传递到重定向脚本的安全变量都以REDIRECT_为前缀。 ==采用访问控制== 现在我们只需要具有REDIRECT_STATUS环境变量赋值的请求,那么我们就可以将其它请求定向到403禁止访问页面。要达到这一效果,请把下列代码添加到/cgi-bin/.htaccess文件中: Order Deny,Allow Deny from All Allow from env=REDIRECT_STATUS ==联合访问与FilesMatch== 以下代码可进入/.htaccess文件并将不可变的正则表达式应用于php[0-9].(ini|cgi)</tt> <FilesMatch "^php5?\.(ini|cgi)$"> Order Deny,Allow Deny from All Allow from env=REDIRECT_STATUS </FilesMatch> ==拒绝非200的REDIRECT_STATUS== 我们也可以用mod_rewrite进一步限制访问,只要用200状态码进行重定向就可以了。如果默认ErrorDocument的php脚本是其本身,[[重定向]]就完成了。类似于 ErrorDocument 403 /error.php 这样的代码,其REDIRECT_STATUS为403。 ==用mod_rewrite拒绝请求== RewriteEngine On RewriteCond %{ENV:REDIRECT_STATUS} !=200 RewriteRule /cgi-bin/path/to/php - [F] ==参见== *[http://www.wordpress.la/codex-%E6%9B%B4%E6%94%B9%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90.html 更改文件权限] *[http://codex.wordpress.org/UNIX_Shell_Skills#chmod_and_file_permissions chmod and file permissions] ==相关条目== *[[Drupal]] *[[OBLOG]] *[[X-Space]] *[[SaBlog-X]] *[[Bo-Blog]] [[category:WordPress中文文档|Z]] [[category:WordPress网站开发|Z]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
模板:WordPress导航
(
查看源代码
)(受保护)