php、Apache网站常用安全配置

一、Apache配置

1、隐藏Apache签名
在请求服务器后返回的文档签名会输出服务器签名,包含了服务器的版本等信息。 在http.conf文件中将ServerSignature配置为Off时可以不发送相应信息:
ServerSignature = Off
将ServerTokens可以设置为以下几个基本的值:Full、Major、Minimal、Os、Prool、Minor。
2、修改文档扩展名
AddType application/x-http-php  xxx(其他扩展名)
3、隐藏文档根目录
    将服务器的配置文件放在DocumentRoot文件夹之外,一般将DocumentRoot与Apache服务器安装路径也分开。
4、拒绝范围某些扩展名的文件
<Files *.inc>
    Order allow,deny
    Deny from all
</Files>


上述配置可以限制访问所有的inc配置文件。
5、使用加密传输
如md5、hash算法、mcrypt包等。
6、使用php伪静态
在http.conf文件中开启Rewrite模块,找到如下:#LoadModule rewrite_module modules/mod_rewrite.so,开启rewrite,去点前面"#"。然后设置Allow Overide All。 查找apache配置文件找到如下
<Directory /> 
	Options FollowSymLinks 
	AllowOverride None 
</Directory> 
将AllowOverride None改为 AllowOverride All
可以使用.htaccess文件实现Url重写和伪静态:
<IFMODULE mod_rewrite.c>
	RewriteEngine On
	#RewriteBase /  (若文件在根目录下不必定义)
	#RewriteRule ^t_(.*).html$ test.php?id=$1 [NC](打开test.php以t_id.html  比如 t_2.html  页面输出 id=2)
	RewriteRule ^([0-9]+)$ test.php?id=$1 [NC](直接输入id  比如 localhost/test/2  页面输出 id=2)
	RewriteRule ^index.html$ index.php [NC](直接输入index.html可打开index.php这个页面)
</IFMODULE>

二、php配置

1、隐藏php版本信息
隐藏php就是隐藏返回给客户端的Header中的“X-Powered-By:php/5.3”项的信息。将php.ini文件中的expose_php设置为0,(默认为1表示添加到服务器签名)
expose_php = 0
2、禁用部分函数

disable_functions = system,exec,shell_exec,passthru,popen,dl,phpinfo
    该指令接受一个用逗号分隔的函数名列表,以禁用特定的函数。

3、不显示错误

display_errors = Off
    是否将错误信息作为输出的一部分显示。在最终发布的web站点上,强烈建议关掉这个特性,并使用错误日志代替。打开这个特性可能暴露一些安全信息,例如web服务上的文件路径、数据库规划或别的信息。

4、关闭远程访问

allow_url_open = Off
    是否允许打开远程文件,建议关闭,如果网站需要采集功能就打开。

5、开启安全模式

safe_mode = On
    是否启用安全模式。打开时,PHP将检查当前脚本的拥有者是否和被操作的文件的拥有者相同,相同则允许操作,不同则拒绝操作。开启安全模式的前提是你的目录文件权限已完全分配正确。

6、目录权限

open_basedir = /var/www/html/aaa:/var/www/html/bbb
    目录权限控制,aaa目录中的php程序就无法访问bbb目录中的内容。反过来也不行。在Linux/UNIX系统中用冒号分隔目录,Windows中用分号分隔目录。



以上仅限本人在平时开发过程中的一些总结,转载请注明出处,欢迎大家讨论交流。



你可能感兴趣的:(php、Apache网站常用安全配置)