一个公共的能够上传图片的目录下,应该给该目录作php禁止解析,这样就会防止其它人上传php的***。php
[root@chy ~]# vi /usr/local/apache2.4/conf/extra/httpd-vhosts.conf <Directory /data/wwwroot/111.com/upload> php_admin_flag engine off <FilesMatch (.*)\.php(.*)> Order allow,deny Deny from all </FilesMatch> </Directory> 主要配置如上,配置详解 <Directory /data/wwwroot/111.com/upload>(给111.com下面的upload目录作禁止php解析 php_admin_flag engine off(禁止php解析) <FilesMatch (.*)\.php(.*)>(通配全部的php) Order allow,deny Deny from all(拒绝全部的php) </FilesMatch> </Directory>(这里作filesmatch (deny)是由于不deny php会访问源代码) [root@chy ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@chy ~]# /usr/local/apache2.4/bin/apachectl graceful (查看下配置是否有问题,而后加载配置)
测试php解析html
[root@chy 111.com]# mkdir /data/wwwroot/111.com/upload (建立一个php目录) [root@chy 111.com]# ls 123.php admin index.php lf.png upload [root@chy 111.com]# cp 123.php upload/ (将123.phpcp到upload目录下) [root@chy 111.com]# curl -x192.168.212.10:80 'http://www.111.com/upload/123.php' -I HTTP/1.1 403 Forbidden Date: Thu, 03 Aug 2017 21:57:03 GMT Server: Apache/2.4.27 (Unix) PHP/5.6.30 Content-Type: text/html; charset=iso-8859-1 [root@chy 111.com]# curl -x192.168.212.10:80 'http://www.111.com/upload/123.php' <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> <p>You don't have permission to access /upload/123.php on this server.<br /> </p> </body></html> (如上这两的测试是 <FilesMatch (.*)\.php(.*)>(通配全部的php) Order allow,deny Deny from all(拒绝全部的php) </FilesMatch> </Directory>(这里作filesmatch (deny)是由于不deny php会访问源代码)在不让解析php的同时也不让访问源代码的操做) [root@chy 111.com]# curl -x192.168.212.10:80 'http://www.111.com/upload/123.php' <?php echo "chyloveff"; php?> (通过测试当不加 <FilesMatch (.*)\.php(.*)>(通配全部的php) Order allow,deny Deny from all(拒绝全部的php) </FilesMatch> </Directory> 这步操做是会下在php的源代码这样来讲是很是危险的)