Bob*_*tiz 7 php apache .htaccess
.htaccess如果启用PHP,我如何让Apache的文件检查?我尝试之类的东西<IfModule !mod_php7.0.c>和<IfModule !mod_php7.c>,但它似乎没有按不执行任何操作时,启用/禁用模块.
当我.htaccess禁用PHP时,我想拒绝所有人拒绝访问.为了防止纯文本PHP代码泄露.
我想做这样的事情:
# If PHP is not installed, deny all access to .php files to prevent PHP code leakage
<IfModule !mod_php7.c>
<FilesMatch \.php$>
order deny,allow
deny from all
</FilesMatch>
</IfModule>
Run Code Online (Sandbox Code Playgroud)
最终它会检查类似的东西if php7 AND php5 AND php4 are disabled, deny access.有任何想法吗?
此外,当AllowOverride为None时,.htaccess文件没有执行任何操作.有什么选择可以防止PHP代码以明文泄漏?
<IfModule !mod_php5.c>
<FilesMatch ".+\.php$">
Order Deny,Allow
Deny from all
</FilesMatch>
</IfModule>
Run Code Online (Sandbox Code Playgroud)
在Apache 2.4中
<IfModule !mod_php5.c>
<FilesMatch ".+\.php$">
Require all denied
</FilesMatch>
</IfModule>
Run Code Online (Sandbox Code Playgroud)
在Apache 2.4中有几个新的有用功能:define,ifdefine和if,else,ifelse.
在下面我们可以默认拒绝,只有在PHP_IS_ENABLED定义时才启用.
<IfModule mod_php5.c>
Define PHP_IS_ENABLED
</IfModule>
<IfModule mod_php7.c>
Define PHP_IS_ENABLED
</IfModule>
# ...
<IfDefine !PHP_IS_ENABLED>
<FilesMatch ".+\.php$">
Require all denied
</FilesMatch>
</IfDefine>
Run Code Online (Sandbox Code Playgroud)
下面是要检查PHP的多个版本(例如,“如果PHP 5的解决方案或PHP 7已启用”),确实工作在.htaccess。
它需要带有mod_env模块的Apache 2.4 (在您的主机上启用了 99%)。
<IfModule mod_php5.c>
SetEnv PHP_IS_ENABLED yes
</IfModule>
<IfModule mod_php7.c>
SetEnv PHP_IS_ENABLED yes
</IfModule>
<If "reqenv('PHP_IS_ENABLED') == 'yes' || reqenv('REDIRECT_PHP_IS_ENABLED') == 'yes'">
... your directives
</If>
Run Code Online (Sandbox Code Playgroud)
REDIRECT_PHP_IS_ENABLED 需要对使用 mod_rewrite 内部重定向的请求进行此操作。
| 归档时间: |
|
| 查看次数: |
6723 次 |
| 最近记录: |