核心配置文件內容php
<Directory /data/wwwroot/110.com/upload> php_admin_flag engine off </Directory>
curl測試時直接返回了php源代碼,並未解析程序員
加一層 FilesMatch 的限制更好, 若是不加, 則會訪問到原代碼shell
爲了防止cc攻擊apache
user_agent能夠理解爲瀏覽器標識瀏覽器
核心配置文件內容php7
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR] RewriteCond %{HTTP_USER_AGENT} .*baidu.com.* [NC] RewriteRule .* - [F] </IfModule>
F Forbidden的意思curl
NC 忽略大小寫, OR 或者 , 匹配1or2socket
curl -A "123123" 指定user_agent函數
cul 經常使用選項:測試
-A 指定 user_agent
-x 至關於省略了hosts
-I 只返回狀態碼, 不返回內容
-e 指定 referer , 必須 http:// 開頭 //從網頁1訪問到網頁2, 網頁2的referer就是"網頁1的地址"
查看php配置文件位置
此方法不是很準確, 最正確的方法是去你的網站底下建立一個phpinfo的php文件, 經過php文件查看
/usr/local/php7/bin/php -i|grep -i "loaded configuration file"
php.ini 經常使用配置
date.timezone=Asia/Shanghai
禁用危險函數, 搜索disable_functions , phpinfo 本身加上 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
display_errors=off //是否在頁面上顯示錯誤 若是否, 需定義log_errors
log_errors=on //錯誤日誌是否開啓 若是是, 則需定義 log_errors 和 error_log , error_reporting
error_log = /tmp/php_errors.log //定義錯誤日誌的路徑
error_reporting=E_ALL & ~E_NOTICE //錯誤日誌記錄的級別,
若是程序員在php代碼中定義了錯誤日誌不輸出, 則也不會輸出錯誤日誌
定義錯誤日誌完成後要用: /usr/local/apache2.4/bin/apachectl graceful ,而後會生成錯誤日誌文件 /tmp/php_errors.log
保險的話也能夠本身先建立錯誤日誌文件並設置權限:
touch /tmp/php_errors.log
chmod 666 /tmp/php_errors.log
日誌是以deamon進程的身份去進行的, 有時候定義了一個錯誤日誌, 但日誌始終沒有生成, 要檢查定義了錯誤日誌的所在目錄有沒有寫權限,並且寫文件人它是deamon