- 配置防盗链
- 访问控制Directory
- 访问控制FilesMatch
- 限定某个目录禁止解析php
- 限制user_agent
- PHP相关配置
- PHP扩展模块安装
-
扩展
几种限制ip的方法 http://ask.apelearn.com/question/6519
apache 自定义header http://ask.apelearn.com/question/830
apache的keepalive和keepalivetimeout http://ask.apelearn.com/question/556
apache开启压缩 http://ask.apelearn.com/question/5528
apache2.2到2.4配置文件变更 http://ask.apelearn.com/question/7292
apache options参数 http://www.365mini.com/page/apache-options-directive.htm
apache禁止trace或track防止xss http://ask.apelearn.com/question/1045
apache 配置https 支持ssl http://ask.apelearn.com/question/1029
apache rewrite教程 http://coffeelet.blog.163.com/blog/static/13515745320115842755199/ http://www.cnblogs.com/top5/archive/2009/08/12/1544098.html
apache rewrite 出现死循环 http://ask.apelearn.com/question/1043
php错误日志级别参考 http://ask.apelearn.com/question/6973
php开启短标签 http://ask.apelearn.com/question/120
php.ini详解 http://legolas.blog.51cto.com/2682485/493917
一.配置防盗链
- 通过限制referer来实现防盗链的功能
- 配置文件增加如下内容
- <Directory /data/wwwroot/www.123.com>
- SetEnvIfNoCase Referer "http://www.123.com" local_ref
- SetEnvIfNoCase Referer "http://123.com" local_ref
- SetEnvIfNoCase Referer "^$" local_ref
- <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
- Order Allow,Deny
- Allow from env=local_ref
- </filesmatch>
- </Directory>
- curl -e "http://www.aminglinux.com/123.html" 自定义referer 测试
示例一:
- 如下配置一下
- 重新加载一下配置文件
- 测试
- -e 用来指定referer,
二.访问控制Directory
- 核心配置文件内容
- <Directory /data/wwwroot/www.123.com/admin/>
- Order deny,allow
- Deny from all
- Allow from 127.0.0.1
- </Directory>
- curl测试状态码为403则被限制访问了
- 这个是以目录的形式来设置的
示例一:
- 编辑
- 如下配置一下
- 重新加载
- 测试
- ok
- no
- 查看一下日志
- 目录的访问路径要写绝对路径
三.访问控制FilesMatch
- 核心配置文件内容
- <Directory /data/wwwroot/www.123.com> <FilesMatch "admin.php(.*)">
- Order deny,allow
- Deny from all
- Allow from 127.0.0.1
- </FilesMatch>
- </Directory>
- 这个是以文件的形式设置的
示例一:
- 如下配置一下
- 重新加载一下配置文件
- 测试
- 404表示已经允许访问
四.限定某个目录禁止解析php
- 核心配置文件内容
- <Directory /data/wwwroot/www.123.com/upload> php_admin_flag engine off
- </Directory>
- curl测试时直接返回了php源代码,并未解析
示例一:
- 如下配置一下
- mkdir /data/wwwroot/www.123.com/upload 创建一个图片上传目录/upload/
- 重新加载一下
- 测试
五.限制user_agent
- user_agent可以理解为浏览器标识
- 核心配置文件内容
- <IfModule mod_rewrite.c>
- RewriteEngine on
- RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR]
- RewriteCond %{HTTP_USER_AGENT} .*baidu.com.* [NC]
- RewriteRule .* - [F]
- </IfModule>
- curl -A "123123" 指定user_agent
示例一:
- 如下配置一下
- 重新加载一下配置文件
- 测试
- curl -A "123123" 指定user_agent
六.PHP相关配置
- 查看php配置文件位置
- /usr/local/php/bin/php -i|grep -i "loaded configuration file"
- date.timezone 定义它的时区
- disable_functions 安全函数:eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close,phpinfo
- error_log,log_errors,display_errors,error_reporting 日志相关
- open_basedir 安全相关
- php_admin_value open_basedir "/data/wwwroot/111.com:/tmp/"
示例一:
- 创建一个PHP文件
- 在浏览器打开
- 未加载,则去源码包拷贝一份
- 重新加载一下配置文件
- 编辑一下
- 添加内容,限制安全函数
- 再加上phpinfo
- 重新加载一下配置文件
- 测试,再次访问就打不开了
示例二:
- 定义它的时区
示例三:日志相关
- 定义错误信息是否要显示在浏览
- 配置错误日志
- 定义日志记录的严谨度(级别)
- 重新加载一下配置文件
- 查看是否有生成这个文件
- 查看属组
- 查看定义所在目录属组和写权限是否是Apache(httpd)的
- 也可以定义之前,先设定文件的权限
示例四:安全相关,限定分别隔离网站
- 定义php.ini 这是针对所有网站的
- 编辑该文件
- 做如下配置
- 重新加载配置文件,并测试一下
示例五:
- 编辑虚拟主机配置文件
- 写如下配置
- 重新加载配置文件,并测试
七.PHP扩展模块安装
示例一:编译安装一个扩展模块
- /usr/local/php/bin/php -m //查看模块
- 下面安装一个redis的模块
- cd /usr/local/src/ 进入该目录下
- wget https://codeload.github.com/phpredis/phpredis/zip/develop 下载包
- mv develop phpredis-develop.zip 包改名
- unzip phpredis-develop.zip 解压包
- cd phpredis-develop 进入该目录下
- /usr/local/php/bin/phpize //生成configure文件
- ./configure --with-php-config=/usr/local/php/bin/php-config 编译一下
- make && make install
- /usr/local/php/bin/php -i |grep extension_dir //查看扩展模块存放目录
- 我们可以在php.ini中去自定义该路径
- vim /usr/local/php/etc/php.ini //增加一行配置(可以放到文件最后一行)
- extension = redis.so
- 查看一下是否加载
示例二:源码包有的情况下编译安装模块
- cd /usr/local/src/php-7.1.6/ 进入到PHP源码包里
- cd ext/ 进入该目录下
- ls 查看有哪些可以编译安装的模块
- PHP源码包ext目录下有的话,可以直接去编译
- /usr/local/php7/bin/php -m |grep zip 查看你想要的模块是否安装
- 没有安装的话,cd zip/ 进入你想要安装的扩展模块,编译
- /usr/local/php7/bin/phpize 执行命令,获取一个configure
- ./configure --with-php-config=/usr/local/php7/bin/php-config 执行命令,编译文件
- echo $?
- make
- echo $?
- make insatll
- /usr/local/php7/bin/php -i |grep -i extension_dir 查看扩展模块存放目录
- ls /usr/local/php7/lib/php/extensions/no-debug-zts-20160303 查看一下
- vi /usr/local/php7/etc/php.ini 我们可以在php.ini中去自定义该路径,//增加一行配置(可以放到文件最后一行)
- /usr/local/php7/bin/php -m |grep zip 查看一下模块是否加载
八.扩展
- 几种限制ip的方法 http://ask.apelearn.com/question/6519
- apache 自定义header http://ask.apelearn.com/question/830
- apache的keepalive和keepalivetimeout http://ask.apelearn.com/question/556
- apache开启压缩 http://ask.apelearn.com/question/5528
- apache2.2到2.4配置文件变更 http://ask.apelearn.com/question/7292
- apache options参数 http://www.365mini.com/page/apache-options-directive.htm
- apache禁止trace或track防止xss http://ask.apelearn.com/question/1045
- apache 配置https 支持ssl http://ask.apelearn.com/question/1029
- apache rewrite教程 http://coffeelet.blog.163.com/blog/static/13515745320115842755199/ http://www.cnblogs.com/top5/archive/2009/08/12/1544098.html
- apache rewrite 出现死循环 http://ask.apelearn.com/question/1043
- php错误日志级别参考 http://ask.apelearn.com/question/6973
- php开启短标签 http://ask.apelearn.com/question/120
- php.ini详解 http://legolas.blog.51cto.com/2682485/493917