日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

LAMP(7限定某个目录禁止解析php、 限制user_agent、 PHP相关配置、PHP扩展模块

發布時間:2023/12/10 php 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LAMP(7限定某个目录禁止解析php、 限制user_agent、 PHP相关配置、PHP扩展模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????????????????限定某個目錄禁止解析php

防止***上傳一個目錄文件php,網站會從而解析php,對我們的網站有很大的危險。

因此,我們需要在能上傳文件的目錄直接禁止解析PHP代碼


禁止步驟

1.編輯虛擬主機配置文件:增添內容



核心配置文件內容

? ? <Directory /data/wwwroot/111.com/upload>

? ? ? ? php_admin_flag engine off ? //禁止解析PHP這行即可


? ? ? <FilesMatch ?(.*)\.php(.*)> ? //加上這個deny是可以防止解析我們xxx.php(.*)源代碼

? ? ? ? Order deny,allow

? ? ? ? Deny from all

? ? ? </FilesMatch>


? ? </Directory>


修改完后:

改完了配置文件需要重新加載一下:

/usr/local/apache2.4/bin/apachectl -t ?(檢測)

/usr/local/apache2.4/bin/apachectl graceful (加載)


創建upload目錄:(在/data/wwwroot/111.com/下創建

cd /data/wwwroot/111.com

mkdir upload

復制admin.php到upload下并改名為test.php


測試:


此時只是顯示test.php源代碼

去掉這個標簽內容,再測試,連訪問的權限都沒有

測試


?????????????????限制user_agent

user_agent:為瀏覽器的標識

當很多用戶同時訪問同一個站點,這樣會很消耗服務器資源

針對user_agent做訪問控制步驟:

1.編輯虛擬主機配置文件:增添內容

<IfModule mod_rewrite.c> ?

? ? ? ? RewriteEngine on

? ? ? ? RewriteCond %{HTTP_USER_AGENT} ?.*curl.* [NC,OR]?

? ? ? ? RewriteCond %{HTTP_USER_AGENT} ?.*baidu.com.* [NC]

? ? ? ? RewriteRule ?.* ?- ?[F] ? ? ? ? ??

</IfModule>

限制.*curl.或者.*baidu.com.這兩個user_agent的訪問



改完了配置文件需要重新加載一下:

/usr/local/apache2.4/bin/apachectl -t ?(檢測)

/usr/local/apache2.4/bin/apachectl graceful (加載)


測試:

在日志文件可以看出:user_agent是我們的定義的curl


指定user_agent進行測試 curl -A(加-A選項)

?curl -A "cansheng" -x192.168.136.133:80 'http://111.com/admin.php' -I?

訪問日志查看user_agent


curl 的常用選項意義:

-A :指定user_agent

-I ? ?:顯示狀態碼

-x ?:相當省略了hosts


?????????????????????????????PHP相關配置


查看我們的配置文件位置:(111.com虛擬主機)

(1)網頁上查看:

首先得在 /data/wwwroot/111.com/index.php下編輯添加

phpinfo();

網頁上查看信息:

cp ?/usr/local/src/php-5.6.30/php.ini-development /usr/local/php/etc/php.ini

復制后則會出現這樣的信息

這就是我們配置文件php.ini的位置


(2)命令行查看

usr/local/php/bin/php -i|grep -i "loaded configuration file"?

(上面的PHP Warning:這個不是報錯。需要取消的話編輯php.ini ?。找到data.timezone

?

把PHP里的一些函數禁掉:

步驟:

1.修改配置文件:vim /usr/local/php/etc/php.ini

增添要禁止的函數

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()函數后再次訪問111.com/index.php(內有phpinfo())則不會顯示函數的內容:


配置error_log (不讓錯誤信息顯示在瀏覽器中)

1.修改display_errors = Off

修改以后就不會把錯誤信息顯示在瀏覽器中

2.定義錯誤日志的路徑:

(1)確保:log_errors =On

(2)路徑:error_log = /tmp/log/php/php_errors.log(自定義路徑)

(3)定義error_log級別:error_reporting

創建 錯誤日志路勁文件:

并修改權限:


測試:



配置open_basedir:(安全選項)


open_basedir:作用是將網站限制在指定的目錄里,就算***黑了這個網址也只能在這個目錄下操作,影響不了其他目錄下的網站。(一臺服務器可以跑多個網站)


步驟:

1.修改配置文件,增加內容。

增加限定所在目錄(多個目錄用“:”隔開


測試:

故意把限定目錄改成不存在的一個目錄:


運行:?curl -x192.168.136.133:80 111.com/index.php -I?

(index.php是在111.com目錄下的)

報錯。

錯誤日志內容顯示:


正確修改完后

訪問正常:


如果我們的服務器上有很多個網站都在同一個目錄,那么直接修改php.ini就不是這么合適。php.ini是針對所有的站點的。

解決方法:

對單個虛擬主機設置open_basedir



步驟:

修改虛擬主機配置文件:

?vim ?/usr/local/apache2.4/conf/extra/httpd-vhosts.conf

增添內容:

php_admin_value open_basedir "/data/wwwroot/111.com:/tmp/"

php_admin_value ?可以定義php.ini里面的參數:


這樣兩臺虛擬主機都限定在各自的目錄下

(/tmp 目錄基本都得添加到限制目錄中,這個是因為一些臨時限制文件一般的都是先存放在/tmp,不加tmp則類似圖片上傳也不能正確使用)


(切記:每次修改完配置文件都要檢測和加載

/usr/local/apache2.4/bin/apachectl -t ?(檢測)

/usr/local/apache2.4/bin/apachectl graceful (加載)



?????????????????????????????????PHP擴展模塊安裝


PHP動態擴展模塊

當我們的需求變更時,我們的模塊在一開始配置完成后沒有變更時的模塊,那么就需要動態擴展:

查看PHP目前都加載了什么模塊

/usr/local/php/bin/php -m?


下面安裝一個redis的模塊(?放在/usr/local/src/目錄下)

1.先下載redis 的包:

2.修改一下名字:

mv develop phpredis-develop.zip

3.解壓:

unzip phpredis-develop.zip


4.進入到包里:

cd phpredis-develop


5.生成configure文件

/usr/local/php/bin/phpize?

yum install -y autoconf


安裝完成后再執行/usr/local/php/bin/phpize?



6.執行

./configure --with-php-config=/usr/local/php/bin/php-config



7.make

8.make ?install


安裝完后:生成有redis.so這個文件,這正是我想要的?

但是此時我們的php并沒有加載到這個模塊


9.配置,讓php加載這個redis模塊:

(1)查看擴展模塊存放目錄,(我們可以在php.ini中去自定義該路徑)

/usr/local/php/bin/php -i |grep extension_dir?

下載的模塊都是默認放在這里的:


(2)編輯php.ini

vim /usr/local/php/etc/php.ini

增加一行配置(可以放到文件最后一行)

extension = redis.so ?


最后就可以查看到php加載了這個模塊

(編譯一個擴展模塊的時候,如果如果自帶的源碼包里(php)的ext目錄下有我們想要的模塊,那么就可以直接在ext編譯它 ,不用下載,先進入該包然后執行生成configure文件這里開始的步驟

)
















轉載于:https://blog.51cto.com/13589255/2088631

總結

以上是生活随笔為你收集整理的LAMP(7限定某个目录禁止解析php、 限制user_agent、 PHP相关配置、PHP扩展模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。