php安全問題大總結
(1) 打開php的安全模式
php的安全模式是個非常重要的內嵌的安全機制,能夠控制一些php中的函數,例如system(),
同時把很多文件操作函數進行了權限控制,也不允許某些關鍵文件的文件,例如/etc/passwd,
但是預設的php.ini是沒有開啟安全模式的,我們把它打開:
safe_mode = on
(2) 使用者群組安全
當safe_mode打開時,safe_mode_gid被關閉,那麼php腳本能夠對文件進行訪問,而且相同
組的用戶也能夠對文件進行訪問。
建議設定為:
safe_mode_gid = off
如果不進行設置,可能我們無法對我們伺服器網站目錄下的文件進行操作了,例如我們需要
對文件進行操作的時候。
(3) 安全模式下執行程式主目錄
如果安全模式開啟了,但是卻是要執行某些程式的時候,可以指定要執行程式的主目錄:
safe_mode_exec_dir = D:/usr/bin
safe_mode_exec_dir = D:/usr/bin
safe_mode_exec_dir = D:/usr/bin
一般情況下是不需要執行什麼程式的,所以建議不要執行系統程式目錄,可以指向一個目錄,
然後把需要執行的程式拷貝過去,例如:
safe_mode_exec_dir = D:/tmp/cmd
但是,我更推薦不要執行任何程序,那麼就可以指向我們網頁目錄:
safe_mode_exec_dir = D:/usr/www
(4) 安全模式下包含文件
如果要在安全模式下包含某些公開文件,那麼就修改一下選項:
safe_mode_include_dir = D:/usr/www/include/
其實一般php腳本中包含文件都是在程式自己已經寫好了,這個可以根據具體需求設定。
(5) 控制php腳本能存取的目錄
使用open_basedir選項能夠控制PHP腳本只能存取指定的目錄,這樣能夠避免PHP腳本存取
不應該存取的文件,一定程度上限制了phpshell的危害,我們通常可以設定為只能存取網站目錄:
open_basedir = D:/usr/www
(6) 關閉危險函數
如果開啟了安全模式,那麼函數禁止是可以不需要的,但是我們為了安全還是考慮進去。例如,
我們覺得不希望執行包括system()等在那的能夠執行指令的php函數,或是能夠查看php資訊的
phpinfo()等函數,那麼我們就可以禁止它們:
disable_functions = system ,密碼,delete,copy,mkdir, rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown
以上只是列了部分不叫常用的檔案處理函數,你也可以把上面執行指令函數和這個函數結合,
就能夠抵制大部分的phpshell了。
(7) 關閉PHP版本資訊在http頭中的洩漏
我們為了防止駭客取得伺服器中php版本的信息,可以關閉該資訊斜路在http頭中:
expose_php = Off
www.shilicn.com 80 的時候,那麼將無法看到PHP的資訊。
(8) 關閉註冊全域變數
在PHP中提交的變量,包括使用POST或GET提交的變量,都將自動註冊為全域變量,能夠直接訪問,
這是對伺服器非常不安全的,所以我們不能讓它註冊為全域變量,就把註冊全域變數選項關閉:
register_globals = Off
當然,如果這樣設定了,那麼取得對應變數的時候就要採用合理方式,例如取得GET提交的變數var,
那麼就要用$_GET['var']來進行獲取,這個php程式設計師要注意。
(9) 開啟magic_quotes_gpc來防止SQL注入
SQL注入是非常危險的問題,小則網站後台被入侵,重則整個伺服器淪陷,
所以一定要小心。 php.ini中有一個設定:
magic_quotes_gpc = Off
這個預設是關閉的,如果它打開後將自動把用戶提交對sql的查詢進行轉換,
比如把' 轉為'等,這對防止sql注射有重大作用。所以我們建議設定為:
magic_quotes_gpc = On
(10) 錯誤訊息控制
一般php在沒有連接到資料庫或其他情況下會有提示錯誤,一般錯誤訊息中會包含php腳本當
前的路徑資訊或查詢的SQL語句等訊息,這類資訊提供給駭客後,是不安全的,所以一般伺服器建議禁止錯誤提示:
display_errors = Off
如果你卻是要顯示錯誤訊息,一定要設定顯示錯誤的級別,例如只顯示警告以上的資訊:
error_reporting = E_WARNING & E_ERROR
當然,我還是建議關閉錯誤提示。
(11) 錯誤日誌
建議在關閉display_errors後能夠把錯誤訊息記錄下來,以便於尋找伺服器運作的原因:
log_errors = On
同時設定錯誤存放的目錄,也建議根日誌的目錄存在一起:
error_log = D:/usr/local/apache2/logs/php_error.log
注意:給檔案必須允許apache使用者的和群組具有寫入的權限。
MYSQL的降權運行
新建立一個使用者例如mysqlstart
net user mysqlstart ****microsoft /add
net localgroup users mystart /del
net localgroup users my ,那麼,給mysqlstart 完全控制的權限
然後在系統服務中設置,MYSQL的服務屬性,在登入屬性當中,選擇此用戶mysqlstart 然後輸入密碼,確定。
重新啟動 MYSQL服務,然後MYSQL就運作在低權限下了。
如果是在windos平台下搭建的apache我們還要注意一點,apache預設運行是system權限,
這很恐怖,這讓人感覺很不爽.那我們就給apache降降權限吧。
net user apache ****microsoft /add
net localgroup users apache /del
ok.我們建立了一個不屬於任何群組的使用者apche。
我們打開電腦管理器,選服務,點apache服務的屬性,我們選擇log on,選擇this account,我們填入上面所建立的帳戶和密碼,
重啟apache服務,ok,apache運行在低權限下了。
其實我們也可以透過設定各個資料夾的權限,讓apache使用者只能執行我們想要讓它能幹的事情,給每個目錄建立一個單獨能讀寫的使用者。
這也是目前許多虛擬主機供應商的流行設定方法哦,不過這種方法用來防止這裡就顯的有點大材小用了。 (http://www.65066.com.cn)

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。
