国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

PHP編碼安全:變量安全

安全
如果通過$GLOBALS從瀏覽器動態獲取變量,也會發生變量覆蓋的情況。為了方便理解,引用全局變量配置的例子進行介紹。

 [[338554]]

變量覆蓋常常被惡意攻擊者用來跳過正常的業務邏輯,越過權限限制,惡意攻擊系統,嚴重時將造成系統癱瘓。

1、全局變量覆蓋

當register_globals全局變量設置開啟時,傳遞過來的值會被直接注冊為全局變量而直接使用,這會造成全局變量覆蓋。

如果通過$GLOBALS從瀏覽器動態獲取變量,也會發生變量覆蓋的情況。為了方便理解,引用全局變量配置的例子進行介紹。 

  1. <form name="login" action="LoginUrl" method="POST">  
  2. <input type=“text” name="username">  
  3. <input type=“password” name="password">  
  4. <input type=“submit” value="login">  
  5. </form> 

通過$GLOBALS獲取瀏覽器提交的變量。 

  1. <?php  
  2. foreach($_REQUEST as $param=>$value) {  
  3. $GLOBALS[$param]=>$value; // 使用$GLOBALS造成變量覆蓋  
  4.  
  5. if(authenticated_user()) { // 認證用戶是否登錄  
  6. $authorized=true 

攻擊者在請求中構造authorized=true,無須認證用戶名和密碼就可以直接設置authorized的值為true,從而跳過認證進入登錄狀態。

為了避免全局變量覆蓋的發生,研發人員不應該使用上面的方式從客戶端接收動態變量將其放入全局的$GLOBALS中。以下是修復后的代碼。 

  1. <?php  
  2. $username=$_POST['username'];  
  3. $password=$_POST['password'];  
  4. if(authenticated_user($username,$password)) { // 認證用戶是否登錄  
  5. $authorized=true 

2、動態變量覆蓋

PHP動態變量是指一個變量的變量名可以動態地設置和使用,一個變量獲取另一個變量的值作為這個變量的變量名。以下是動態變量示例。 

  1. <?php  
  2. $Bar="a" 
  3. $Foo="Bar" 
  4. $World="Foo"
  5. $Hello="World" 
  6. $a="Hello" 
  7. echo $a; // 輸出Hello  
  8. echo $$a; // 輸出World  
  9. echo $$$a; // 輸出Foo  
  10. echo $$$$a; // 輸出Bar 
  11. echo $$$$$a; // 輸出a  
  12. echo $$$$$$a; // 輸出Hello  
  13. echo $$$$$$$a; // 輸出World 

研發人員在平時研發過程中多多少少會使用一些動態變量,然而使用不當將會造成變量覆蓋,所以應該盡量避免使用PHP的動態變量。

以下代碼示例中的動態變量就屬于使用不當的情況。 

  1. <?php  
  2. foreach($_POST as $key=>$value) {  
  3. $$key=$value; // 造成動態變量覆蓋  
  4.  
  5. if(authenticated_user()) { // 認證用戶是否登錄  
  6. $authorized=true 
  7.  
  8. ?> 

當用戶提交的參數中包含authorized=true時,在執行authenticated_user()步驟之前,authorized的值已經被設置為true,因此用戶在無須通過校驗的情況下即可直接向下執行,繞過了校驗邏輯,造成任意越權訪問的后果。

為了避免全局變量覆蓋的發生,應盡量不使用動態變量接收客戶端參數。以下是修復后的代碼。 

  1. <?php  
  2. $username=$_POST['username'];  
  3. $password=$_POST['password'];  
  4. if(authenticated_user($username,$password)) { // 認證用戶是否登錄  
  5. $authorized=true 

3、函數extract()變量覆蓋

extract()函數的作用是從數組中導入變量到當前符號表中,檢查每個鍵是否是有效的變量名。它還檢查與符號表中現有變量是否沖突。為了防止發生變量覆蓋,在使用的時候需要將flags設置為EXTR_SKIP,以免將已有變量覆蓋。 

  1. <?php  
  2. extract($_REQUEST ); // 使用extract造成變量覆蓋  
  3. if(authenticated_user()) { // 認證用戶是否登錄  
  4. $authorized=true 
  5.  
  6. ?> 

當用戶提交的參數中包含authorized=true時,在執行authenticated_user()步驟之前,extract()函數從$_REQUEST中解析到authorized并設置全局變量,它的值被設置為true。此時,用戶在無須通過校驗的情況下可直接向下執行,繞過了校驗邏輯,造成任意越權訪問。

為了避免全局變量覆蓋的發生,應盡量不使用extract()函數接收客戶端參數。下面是修復后的代碼。 

  1. <?php  
  2. $username=$_POST['username'];  
  3. $password=$_POST['password'];  
  4. if(authenticated_user($username,$password)) { // 認證用戶是否登錄  
  5. $authorized=true 

4、函數import_request_variables()變量覆蓋

import_request_variables()函數的作用是導入GET/POST/Cookie變量進入全局范圍。如果在PHP配置中禁用了register_globals,但是又希望導入一些全局變量,可能會用到import_request_variables()函數。 

  1. <?php  
  2. import_request_variables("gp"); // 導入GET和POST中的變量造成變量覆蓋  
  3. if(authenticated_user()) { // 認證用戶是否登錄  
  4. $authorized=true 
  5.  
  6. ?> 

當用戶提交的參數中包含authorized=true時,在執行authenticated_user()步驟之前,import_request_variables解析GET或POST中包含的authorized參數,并且設置為true。此時,用戶在無須通過校驗的情況下可直接向下執行,繞過了校驗邏輯,造成任意越權訪問。

為了避免全局變量覆蓋的發生,應盡量不使用上述方式接收客戶端參數。以下是修復后的代碼。 

  1. <?php  
  2. $username=$_POST['username'];  
  3. $password=$_POST['password'];  
  4. if(authenticated_user($username,$password)) { // 認證用戶是否登錄  
  5. $authorized=true 

5、函數parse_str()變量覆蓋

parse_str()函數用于解析客戶端以x-www-form-urlencoded編碼格式的字符串到PHP變量中。該函數有指定輸出變量和不指定輸出變量兩種使用方式。

以下示例是parse_str()的兩種使用方式。 

  1. <?php  
  2. $str="first=value&arr[]=foo+bar&arr[]=baz" 
  3. // 第一種:當指定輸出變量時  
  4. parse_str($str,$output);  
  5. echo $output['first']; // value  
  6. echo $output['arr'][0]; // foo bar  
  7. echo $output['arr'][1]; // baz  
  8. // 第一種:當不指定輸出變量時  
  9. parse_str($str);  
  10. echo $first; // value  
  11. echo $arr[0]; // foo bar  
  12. echo $arr[1]; // baz  
  13. ?> 

在不指定輸出變量的情況下,極易出現變量覆蓋,影響正常業務邏輯,例如以下形式。 

  1. <?php  
  2. parse_str($GLOBALS['HTTP_RAW_POST_DATA']); //獲取POST中的變量造成變量覆蓋  
  3. if(authenticated_user()) { // 認證用戶是否登錄  
  4. $authorized=true 
  5.  
  6. ?> 

當用戶在提交的參數中直接提交authorized=true時,parse_str()函數通過解析POST中的authorized并且將值設置為true。此時,無須執行if條件內部語句即可將authorized的值設置為true,就跳過了用戶驗證邏輯,造成任意登錄。

為了避免全局變量覆蓋的發生,應盡量使用指定輸出變量的方式。以下是修復后的代碼。 

  1. <?php  
  2. parse_str($_POST,$output);  
  3. if(authenticated_user($output['username'],$output['password'])) { // 認證用戶是否登錄  
  4. $authorized=true 
  5.  

 

責任編輯:龐桂玉 來源: 計算機與網絡安全
相關推薦

2011-09-14 10:38:39

2020-10-14 11:30:10

PHP網絡安全加密

2020-11-06 15:00:58

PHPMySQL數據庫

2020-11-09 15:49:38

PHPMemcache網絡安全

2020-11-05 10:20:54

前端編碼規范安全漏洞

2018-10-06 05:00:53

2016-10-10 00:18:27

2023-08-28 16:22:06

2012-06-29 09:27:51

2012-06-28 09:45:58

2020-10-24 14:10:26

PHP網絡安全人機識別

2013-06-05 09:51:04

2010-08-30 12:08:05

2015-07-31 09:27:56

安全編碼代碼審計Python

2020-08-30 14:34:42

Java語言安全編碼web安全

2009-12-08 09:51:10

PHP intval函

2009-12-11 15:28:02

PHP安全防護

2010-07-15 15:49:53

PHP網站安全

2009-11-24 13:17:16

PHP安全驗證數據

2009-07-03 14:31:51

點贊
收藏

51CTO技術棧公眾號

涩涩av在线| 欧美成人高清视频在线观看| 国产高清不卡二三区| 国产综合久久久久| 999精品嫩草久久久久久99| 欧美在线观看视频一区二区| 性猛交ⅹ×××乱大交| 99视频在线精品| 波多野结衣 作品| 美女一区二区三区在线观看| 久久久com| 午夜在线一区二区| 久久精品成人一区二区三区蜜臀| 中国成人一区| 亚洲r级在线观看| 欧美伊人久久| 国产成人精品一区二区三区福利| 亚洲精品小说| 成人夜晚看av| 亚洲国产精品一区| 久久久久网址| 日本美女一区二区三区视频| 欧美日韩精品免费看 | vam成人资源在线观看| 日韩精品免费看| 欧美一级大黄| 久久亚洲私人国产精品va| 国产一区二区在线观| 久久久免费av| 久久视频国产| 免费国产一区二区| 奇米精品一区二区三区在线观看| 亚洲电影观看| 国产精品丝袜视频| 中国精品18videos性欧美| 午夜精品久久久久久久99樱桃| 精品伦理一区二区| 亚洲午夜精品17c| 国产区在线视频| 日韩欧美在线影院| 日韩电影免费观看高清完整版| 中文字幕欧美国内| 综合视频一区| 国产精品丝袜一区二区三区| 欧美国产日本| 在线精品日韩| 国产婷婷色一区二区三区在线| av在线天天| 欧美性猛交xxxxxxxx| 日本在线观看大片免费视频| 正在播放欧美一区| 少妇精品久久久一区二区三区| 国产欧美精品一区二区三区-老狼| 亚洲美女色禁图| 久久人人爽人人爽人人av| 亚洲免费在线视频一区 二区| a视频网址在线观看| 久久精品播放| 最色在线观看| 老汉av免费一区二区三区| 国产不卡av在线免费观看| 999国产精品视频| 欧美日韩精品免费看| 91一区二区三区在线观看| 99爱视频在线观看| 欧美丰满少妇xxxxx高潮对白| 欧美free嫩15| 91精品啪aⅴ在线观看国产| 激情综合一区二区三区| 国产精品视频一区二区图片| 91精品国产综合久久婷婷香蕉| 国产精品va视频| 国产欧美日韩伦理| 91在线国内视频| 国产综合在线观看| 久久影院模特热| 亚洲激精日韩激精欧美精品| 欧美一级片中文字幕| 欧美日本国产一区| 亚洲乱码一区| 日韩欧美第二区在线观看| 中文在线一区二区| 超碰在线97国产| 国产一区欧美二区三区| 成人一区二区视频| 在线免费观看黄| 青青草国产精品一区二区| 久久国产精品一区二区| 色老板在线视频| 亚洲欧美日韩国产成人| 66视频精品| 69久久久久久| 日韩不卡中文字幕| 伊人久久大香线蕉av超碰演员| 大香煮伊手机一区| 亚洲高清免费观看高清完整版| 在线三级电影| 91制片厂毛片| 亚洲欧美国产日韩天堂区| 久久久久国产精品一区三寸| 久久白虎精品| 久久韩剧网电视剧| 成人在线高清视频| 波多野结衣中文字幕一区 | 欧美影院一区| 李宗瑞系列合集久久| 亚洲毛片在线看| 国产亚洲aⅴaaaaaa毛片| 凹凸成人精品亚洲精品密奴| 国产一区二区三区播放| 欧美色综合影院| 欧美丝袜激情| 污片在线免费看| 在线观看国产欧美| 日韩精品电影一区亚洲| 四虎电影院在线观看| 国模叶桐国产精品一区| 不卡视频免费播放| xx欧美xxx| 一级全黄肉体裸体全过程| 日韩亚洲国产中文字幕欧美| 国产一区欧美| 黄色毛片在线看| 国产日韩欧美日韩大片| 亚洲黄色录像片| 亚洲欧洲免费| 高清hd写真福利在线播放| 久久久久亚洲精品成人网小说| 91久色porny| japansex久久高清精品| 老太脱裤子让老头玩xxxxx| 亚洲一级黄色片| 国产精品白丝jk黑袜喷水| 啊啊啊久久久| 伊人狠狠色丁香综合尤物| 精品1区2区在线观看| 美女任你摸久久| 九色porny自拍视频在线观看 | 有码一区二区三区| 欧美交a欧美精品喷水| 加勒比在线日本| 日韩男女性生活视频| 亚洲成av人影院在线观看网| 欧美色图在线播放| 天堂av网在线| 国语精品免费视频| 日韩精品中文字幕在线不卡尤物 | 99久久久精品免费观看国产 | 夜久久久久久| 精品黄色免费中文电影在线播放 | av黄色在线网站| 欧美xxxx14xxxxx性爽| 中文字幕国产一区二区| 最新国产一区| 成人亚洲综合天堂| 色综合影院在线观看| 亚洲天堂2020| 国产精品久久久久久久浪潮网站 | 日韩福利电影在线观看| 亚洲色图第三页| 日韩电影在线观看中文字幕 | 99视频精品全国免费| 一二三区在线| 高清一区二区三区视频| 日韩三级在线观看| 成人高清视频在线| 亚洲人成亚洲精品| 91欧美在线视频| 99亚洲精品视频| 久久久亚洲成人| 日韩欧美在线免费| 久久国产乱子精品免费女| 亚洲伊人影院| 波多野结衣一区二区| 久久久久久av无码免费网站下载| 欧美国产中文字幕| 欧美亚洲综合网| 成人亚洲一区二区一| 欧美综合久久| 国产免费拔擦拔擦8x在线播放 | 九九久久精品视频| 国产成人高清精品免费5388| 色吊丝在线永久观看最新版本| 日韩中文不卡| 久久成人综合视频| 日本韩国欧美一区| 国产69精品久久99不卡| 色婷婷狠狠五月综合天色拍| 欧美日韩在线看片| 日韩亚洲在线视频| 国模一区二区三区私拍视频| 欧美成人四级hd版| 欧美一区二区三区在| 亚洲欧美国产77777| 久久国产精品第一页| 成人在线丰满少妇av| 免费欧美电影| 国产视频二区在线观看| 男女午夜激情视频| 日本最新一区二区三区视频观看|