PHP漏洞全解(一)-PHP網站的安全性問題

來源:互聯網
上載者:User

針對PHP的網站主要存在下面幾種攻擊方式:

1、命令注入(Command Injection)

2、eval注入(Eval Injection)

3、用戶端指令碼攻擊(Script Insertion)

4、跨網站指令碼攻擊(Cross Site Scripting, XSS)

5、SQL注入攻擊(SQL injection)

6、跨網站偽造要求攻擊(Cross Site Request Forgeries, CSRF)

7、Session 工作階段劫持(Session Hijacking)

8、Session 固定攻擊(Session Fixation)

9、HTTP響應拆分攻擊(HTTP Response Splitting)

10、檔案上傳漏洞(File Upload Attack)

11、目錄穿越漏洞(Directory Traversal)

12、遠程檔案包含攻擊(Remote Inclusion)

13、動態函數注入攻擊(Dynamic Variable Evaluation)

14、URL攻擊(URL attack)

15、表單提交欺騙攻擊(Spoofed Form Submissions)

16、HTTP請求欺騙攻擊(Spoofed HTTP Requests)

以後的每期連載,會逐個介紹這些漏洞的原理和防禦方法。

幾個重要的php.ini選項:

RegisterGlobals

php>=4.2.0,php.ini的register_globals選項的預設值預設為Off,當register_globals

的設定為On時,程式可以接收來自伺服器的各種環境變數,包括表單提交的變數,而且由於PHP不必事先初始設定變數的值,從而導致很大的安全隱患。

例1:

//check_admin()用於檢查目前使用者許可權,如果是admin設定$is_admin變數為true,然後下面判斷此變數是否為true,然後執行管理的一些操作。

 
  1. //ex1.php 
  2. if(check_admin()) 
  3. $is_admin=true; 
  4. if($is_admin) 
  5. do_something(); 
  6. ?> 

這一段代碼沒有將$is_admin事先初始化為Flase,如果register_globals為On,那麼我們直接提交http://www.sectop.com/ex1.php?is_admin=true,就可以繞過check_admin()的驗證:

例2:

 
  1. //ex2.php 
  2. if(isset($_SESSION["username"])) 
  3. do_something(); 
  4. else 
  5. echo"您尚未登入!"; 
  6. ?> 

當register_globals=On時,我們提交http://www.sectop.com/ex2.php?_SESSION[username]=dodo,就具有了此使用者的許可權所以不管register_globals為什麼,我們都要記住,對於任何傳輸的資料要經過仔細驗證,變數要初始化。

safe_mode

安全模式,PHP用來限制文檔的存取、限制環境變數的存取,控制外部程式的執行。啟用

安全模式必須設定php.ini中的safe_mode=On

1、限制檔案存取

safe_mode_include_dir="/path1:/path2:/path3"

不同的檔案夾用冒號隔開

2、限制環境變數的存取

safe_mode_allowed_env_vars=string

指定PHP程式可以改變的環境變數的首碼,如:safe_mode_allowed_env_vars=PHP_ ,當這個選項的值為空白時,那麼php可以改變任何環境變數

safe_mode_protected_env_vars=string用來指定php程式不可改變的環境變數的首碼。

3、限制外部程式的執行

safe_mode_exec_dir=string

此選項指定的檔案夾路徑影響system、exec、popen、passthru,不影響shell_exec和“``”。

disable_functions=string

不同的函數名稱用逗號隔開,此選項不受安全模式影響。

magicquotes

用來讓php程式的輸入資訊自動轉義,所有的單引號(“'”),雙引號(“"”),反斜線(“\”)和Null 字元(NULL),都自動被加上反斜線進行轉義magic_quotes_gpc=On用來設定magicquotes為On,它會影響HTTP請求的資料(GET、POST、Cookies)程式員也可以使用addslashes來轉義提交的HTTP 要求資料,或者用stripslashes 來刪除轉義。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.