來源:https://www.xcseoer.com| 2022-06-25 01:50:49
安全配置一(yī)?(1) 打開(kāi)php的安全模式 php的安全模式是個非常重要的内嵌的安全機制,能夠控制一(yī)些php中(zhōng)的函數,比如system(), 同時把很多文件操作函數進行了權限控制,也不允許對某些關鍵文件的文件,比如/etc/passwd, 但是默認的php.ini是沒有打開(kāi)安全模式的,我(wǒ)們把它打開(kāi): safe_mode = on?(2) 用戶組安全 當safe_mode打開(kāi)時,safe_mode_gid被關閉,那麽php腳本能夠對文件進行訪問,而且相同 組的用戶也能夠對文件進行訪問。
建議設置爲: safe_mode_gid = off 如果不進行設置,可能我(wǒ)們無法對我(wǒ)們服務器網站目錄下(xià)的文件進行操作了,比如我(wǒ)們需要 對文件進行操作的時候。?(3) 安全模式下(xià)執行程序主目錄 如果安全模式打開(kāi)了,但是卻是要執行某些程序的時候,可以指定要執行程序的主目錄: safe_mode_exec_dir = D:/usr/bin 一(yī)般情況下(xià)是不需要執行什麽程序的,所以推薦不要執行系統程序目錄,可以指向一(yī)個目錄, 然後把需要執行的程序拷貝過去(qù),比如: safe_mode_exec_dir = D:/tmp/cmd 但是,我(wǒ)更推薦不要執行任何程序,那麽就可以指向我(wǒ)們網頁目錄: safe_mode_exec_dir = D:/usr/www?(4) 安全模式下(xià)包含文件 如果要在安全模式下(xià)包含某些公共文件,那麽就修改一(yī)下(xià)選項: safe_mode_include_dir = D:/usr/www/include/ 其實一(yī)般php腳本中(zhōng)包含文件都是在程序自己已經寫好了,這個可以根據具體(tǐ)需要設置。?(5) 控制php腳本能訪問的目錄 使用open_basedir選項能夠控制PHP腳本隻能訪問指定的目錄,這樣能夠避免PHP腳本訪問 不應該訪問的文件,一(yī)定程度上限制了phpshell的危害,我(wǒ)們一(yī)般可以設置爲隻能訪問網站目錄: open_basedir = D:/usr/www(6) 關閉危險函數 如果打開(kāi)了安全模式,那麽函數禁止是可以不需要的,但是我(wǒ)們爲了安全還是考慮進去(qù)。比如, 我(wǒ)們覺得不希望執行包括system()等在那的能夠執行命令的php函數,或者能夠查看php信息的 phpinfo()等函數,那麽我(wǒ)們就可以禁止它們: disable_functions = system,passthru,exec,shell_exec,popen,phpinfo 如果你要禁止任何文件和目錄的操作,那麽可以關閉很多文件操作 disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir, rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown 以上隻是列了部分(fēn)不叫常用的文件處理函數,你也可以把上面執行命令函數和這個函數結合, 就能夠抵制大(dà)部分(fēn)的phpshell了。?(7) 關閉PHP版本信息在http頭中(zhōng)的洩漏 我(wǒ)們爲了防止黑客獲取服務器中(zhōng)php版本的信息,可以關閉該信息斜路在http頭中(zhōng): expose_php = Off? ? ? ? 比如黑客在 telnet www.greatmo.com 80 的時候,那麽将無法看到PHP的信息。 ?(8) 關閉注冊全局變量 在PHP中(zhōng)提交的變量,包括使用POST或者GET提交的變量,都将自動注冊爲全局變量,能夠直接訪問, 這是對服務器非常不安全的,所以我(wǒ)們不能讓它注冊爲全局變量,就把注冊全局變量選項關閉: register_globals = Off 當然,如果這樣設置了,那麽獲取對應變量的時候就要采用合理方式,比如獲取GET提交的變量var, 那麽就要用$_GET['var']來進行獲取,這個php程序員(yuán)要注意。?(9) 打開(kāi)magic_quotes_gpc來防止SQL注入 SQL注入是非常危險的問題,小(xiǎo)則網站後台被入侵,重則整個服務器淪陷, 所以一(yī)定要小(xiǎo)心。php.ini中(zhōng)有一(yī)個設置: magic_quotes_gpc = Off 這個默認是關閉的,如果它打開(kāi)後将自動把用戶提交對sql的查詢進行轉換, 比如把 ' 轉爲 '等,這對防止sql注射有重大(dà)作用。所以我(wǒ)們推薦設置爲: magic_quotes_gpc = On?(10) 錯誤信息控制 一(yī)般php在沒有連接到數據庫或者其他情況下(xià)會有提示錯誤,一(yī)般錯誤信息中(zhōng)會包含php腳本當 前的路徑信息或者查詢的SQL語句等信息,這類信息提供給黑客後,是不安全的,所以一(yī)般服務器建議禁止錯誤提示: display_errors = Off 如果你卻是是要顯示錯誤信息,一(yī)定要設置顯示錯誤的級别,比如隻顯示警告以上的信息: error_reporting = E_WARNING & E_ERROR 當然,我(wǒ)還是建議關閉錯誤提示。?(11) 錯誤日志(zhì) 建議在關閉display_errors後能夠把錯誤信息記錄下(xià)來,便于查找服務器運行的原因: log_errors = On 同時也要設置錯誤日志(zhì)存放(fàng)的目錄,建議根apache的日志(zhì)存在一(yī)起: error_log = D:/usr/local/apache2/logs/php_error.log 注意:給文件必須允許apache用戶的和組具有寫的權限。? MYSQL的降權運行 新建立一(yī)個用戶比如mysqlstart net user mysqlstart ****microsoft /add net localgroup users mysqlstart /del? 不屬于任何組 如果MYSQL裝在d:mysql ,那麽,給 mysqlstart 完全控制 的權限 然後在系統服務中(zhōng)設置,MYSQL的服務屬性,在登錄屬性當中(zhōng),選擇此用戶 mysqlstart 然後輸入密碼,确定。 重新啓動 MYSQL服務,然後MYSQL就運行在低權限下(xià)了。 如果是在windos平台下(xià)搭建的apache我(wǒ)們還需要注意一(yī)點,apache默認運行是system權限, 這很恐怖,這讓人感覺很不爽.那我(wǒ)們就給apache降降權限吧。? net user apache ****microsoft /add net localgroup users apache /del? ok.我(wǒ)們建立了一(yī)個不屬于任何組的用戶apche。 我(wǒ)們打開(kāi)計算機管理器,選服務,點apache服務的屬性,我(wǒ)們選擇log on,選擇this account,我(wǒ)們填入上面所建立的賬戶和密碼, 重啓apache服務,ok,apache運行在低權限下(xià)了。 實際上我(wǒ)們還可以通過設置各個文件夾的權限,來讓apache用戶隻能執行我(wǒ)們想讓它能幹的事情,給每一(yī)個目錄建立一(yī)個單獨能讀寫的用戶。 這也是當前很多虛拟主機提供商(shāng)的流行配置方法哦,不過這種方法用于防止這裏就顯的有點大(dà)材小(xiǎo)用了。安全配置二? 前面介紹了IIS+MySQL+PHP的基本配置過程和Windows的基本權限設置。這一(yī)部分(fēn)我(wǒ)們需要讨論php的安全配置還有Web目錄的安全配置,當然也必須有IIS的變态安全配置了。我(wǒ)這裏先廢話(huà)幾句。 我(wǒ)們最終的目标是Web站點隻運行php,不支持asp不支持asp.net,讓特定的目錄或者子網站不能執行php腳本,例如圖片目錄,我(wǒ)們對它設置成不能運行php,這樣就算您的網站被“黑客”登錄了後台,能上傳文件。但是最終他也不能執行webshell。 就算拿到了webshell,他也不能讀目錄或者文件,不能執行命令。換句大(dà)話(huà)就是說強大(dà)的webshell在黑客手上沒有任何的利用價值,讓黑客最終 直接抓狂而死。呵呵!其實做到這一(yī)點不是非常的難,跟随我(wǒ)的腳步來吧。學完本文章你就能獨立的完成這樣的變态的服務器配置了。?一(yī)、php.ini文件變态配置? 我(wǒ)們爲什麽把php.ini放(fàng)在最前面寫呢,因爲我(wǒ)們的Web網站是php的,所以很多默認的選項是不安全的。給黑客留下(xià)了非常多的可利用機會,所以第一(yī)步我(wǒ)們必須要把php.ini設置的變态些,這樣就能阻止一(yī)般腳本黑客的攻擊了。 我(wǒ)們首先來了解一(yī)些php.ini的基本概念性。空白(bái)字符和以分(fēn)号開(kāi)始的行被簡單地忽略。設置指令的格式如下(xià):directive = value 指令名(directive)是大(dà)小(xiǎo)寫敏感的!所以"foo=bar"不同于"FOO=bar"。值(value)可以是:? 1. 用引号界定的字符串(如:"foo") 2. 一(yī)個數字(整數或浮點數,如:0,1,34,-1,33.55) 3. 一(yī)個PHP常量(如:E_ALL,M_PI) 4. 一(yī)個INI常量(On,Off,none) 5. 一(yī)個表達式(如:E_ALL & ~E_NOTICE)? 還有另外(wài)一(yī)個是設置布爾值,1爲On就是開(kāi)啓,0爲Off就是關閉。php.ini分(fēn)了很多部分(fēn),例如:模塊部分(fēn),php全局配置,數據庫配置,等等。如圖1所示是一(yī)個基本的php.ini的例子。了解了基本的概念以後我(wǒ)們就可以開(kāi)始變态配置之旅。如何讓你的PHP網站變得更安全由東莞網站設計編輯 /wx/news/9216.html如需轉載請注明出處
動态網站建設 雲浮網站建設 金平網站建設 東坑網站建設 陽西網站建設 從化網站建設 東莞網頁制作 東莞網絡推廣 東莞網頁設計 東莞建網站 東莞做網站公司 東莞網站改版 東莞建站費(fèi)用 東莞網站開(kāi)發