隐藏PHP还可以把你在使用PHP 来驱动网站的这一事实隐藏起来,或者至少不那么明显。使用expose_php指令就能避免将php版本信息追加到Web 服务器签名的最后。不允许访问phpinfo()可以防止攻击者得到你的软件版本号和其他重要信息。通过改变文档扩展名,使得这些页面映射到PHP 脚本不容易被看出来。
1.expose_php=On|Off
作用域:PHP_INI_SYSTEM;默认值:On。
启用时,PHP指令expose_php将细节追加到服务器签名后面。例如,如果启用了ServerSignature,ServerTokens设置为Full,并且启用了此指令,服务器签名档有关部分如下:
Apache/2.0.44(Unix) DAV/2 PHP/5.0.0b3-dev Server at www.example.com Port 80
如果expose_php被禁用,则服务器签名如下所示:
Apache/2.0.44(Unix) DAV/2 Server at www.example.com Port 80
2.删除phpinfo() 调用的所有实例
phpinfo()函数提供了一个很棒的工具,可用于在指定服务器上查看PHP 配置的总结。但是,由于在服务器上未加保护,这些文件对于攻击者来说实可谓是一个金矿。例如,这个函数能生成操作系统、PHP 和Web 服务器版本、配置标志的有关信息,还能生成关于所有可用扩展及其版本的详细报告。如果允许攻击者访问此信息,就更有可能发现并利用潜在的攻击漏洞。
遗憾的是,似乎许多开发人员没有意识到或不关心这些漏洞,因为只要在搜索引擎中键入phpinfo.php,将得到大约336 000 个结果,其中很多链接直接指向执行phpinfo()命令的文件,因而提供了关于服务器的大量信息。对于早期脆弱的PHP 版本。只需快速地修改搜索条件,加入其他关键词,就能得到原来结果的一个子集,而这将成为攻击的主要对象,因为他们使用了已知不安全的PHP 、Apache 、IIS版本和各种所支持的扩展。
允许其他人查看phpinfo()的结果,这实质上相当于向公众提供一个路线图,其中列出了你的服务器的许多技术特性和缺陷。不要仅仅因为懒惰未能删除或保护这个文件而成为攻击的牺牲品。
3.修改文档扩展名
启用PHP的文档一般通过其独特的扩展名就能识别,最常见的包括.php、php3 和.phtml 。你知道这可以很容易地改为你希望的其他扩展名吗?甚至可以改成是.html、.asp或者.jsp?,为此只要在httpd.conf 文件中修改如下一行:
Addtype application/x-httpd-php .php
添加所希望的任何扩展名,例如:
AddType application/x-httpd-php .asp
当然,要确保这不会导致与其他安装的服务器技术相冲突。
===============================
===============================
总的说来,通过隐藏的手段提高安全性被认为是作用不大的做法。但某些情况下,可以临时临时迷惑对方.
1、可以在在 php.ini 文件里设置 expose_php = off ,可以减少他们能获得的有用信息。
2、另一方式是用修改web服务器的配置文件,设置别的或取消扩展名
如果不想让别人知道你的网站使用PHP程序以达到安全的目的.你可以按照下面的方法配置你的httpd.conf文件。 你可以使用下面的方法来达到隐藏的目的: 1.将PHP隐藏为其它语言 在你的httpd.conf里任意位置添加下面这一行 # Make PHP code look like other code types AddType application/x-httpd-php .asp .py .pl .jsp aspx 2.对 PHP 使用未知扩展名 在你的httpd.conf里任意位置添加下面这一行 # Make PHP code look like unknown types AddType application/x-httpd-php .bop .foo .133t .los .abc 3.对 PHP 使用 HTML 扩展名 在你的httpd.conf里任意位置添加下面这一行 # Make all PHP code look like html AddType application/x-httpd-php .htm .html 重启你的apache把你的PHP文件名改为上面你所设置的文件后缀名。打开测试…… 然后就可用 类似 http://127.0.0.1/index.jsp 的路径访问 http://127.0.0.1/index.php |
要让此方法生效,必须把 PHP 文件的扩展名改为以上的扩展名,并重启服务器。
这样就通过隐藏来提高了安全性,虽然防御能力很低而且有些缺点。
===============================
===============================
1.开启apache Rewrite_mod模块。
httpd.conf106H 去掉 LoadModule rewrite_module modules/mod_rewrite.so之前的#
2.在配置文件末尾添加虚拟主机配置
view plaincopy to clipboardprint?
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot e:\test
ServerName www.test.test
</VirtualHost>
<Directory "e:\test">
Options Indexes FollowSymLinks
AllowOverride All
Order Deny,Allow
Allow from all
</Directory>
以上相关选项根据自己项目的存放目录进行相关修改
重新启动apache
3.在项目根目录下新建.htaccess文件
view plaincopy to clipboardprint?
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^([a-zA-Z]+)\/([a-zA-Z0-9]+)\.shtml$ $1.php?id=$2 [L]
</IfModule>
只需要添加相关RewriteRule就可以
上面写到的RewriteRule ^([a-zA-Z]+)\/([a-zA-Z0-9]+)\.shtml$ $1.php?id=$2 [L]
实现了http://www.test.test/test/3.shtml 实际URL http://www.test.test/test.php?id=3