需要注意的幾個(gè)PHP漏洞小結(jié)
更新時(shí)間:2012年02月05日 21:47:57 作者:
幾個(gè)PHP漏洞小結(jié),從事php開(kāi)發(fā)的朋友可以參考下
需要注意的幾個(gè)PHP漏洞
幾個(gè)重要的php.ini選項(xiàng)
Register Globals
php>=4.2.0,php.ini的register_globals選項(xiàng)的默認(rèn)值預(yù)設(shè)為Off,當(dāng)register_globals的設(shè)定為On時(shí),程序可以接收來(lái)自服務(wù)器的各種環(huán)境變量,包括表單提交的變量,而且由于PHP不必事先初始化變量的值,從而導(dǎo)致很大的安全隱患.
例1:
//check_admin()用于檢查當(dāng)前用戶權(quán)限,如果是admin設(shè)置$is_admin變量為true,然后下面判斷此變量是否為true,然后執(zhí)行管理的一些操作
//ex1.php
if (check_admin())
{
$is_admin = true;
}
if ($is_admin)
{
do_something();
}
?>
這一段代碼沒(méi)有將$is_admin事先初始化為Flase,如果register_globals為On,那么我們直接提交 http://www.sectop.com/ex1.php?is_admin=true,就可以繞過(guò)check_admin()的驗(yàn)證
例2:
//ex2.php
if (isset($_SESSION["username"]))
{
do_something();
}
else
{
echo "您尚未登錄!";
}
?>
//ex1.php
$dir = $_GET["dir"];
if (isset($dir))
{
echo "";
system("ls -al ".$dir);
echo "";
}
?>
mixed eval(string code_str) //eval注入一般發(fā)生在攻擊者能控制輸入的字符串的時(shí)候
//ex2.php
$var = "var";
if (isset($_GET["arg"]))
{
$arg = $_GET["arg"];
eval("$var = $arg;");
echo "$var =".$var;
}
?>
幾個(gè)重要的php.ini選項(xiàng)
Register Globals
php>=4.2.0,php.ini的register_globals選項(xiàng)的默認(rèn)值預(yù)設(shè)為Off,當(dāng)register_globals的設(shè)定為On時(shí),程序可以接收來(lái)自服務(wù)器的各種環(huán)境變量,包括表單提交的變量,而且由于PHP不必事先初始化變量的值,從而導(dǎo)致很大的安全隱患.
例1:
復(fù)制代碼 代碼如下:
//check_admin()用于檢查當(dāng)前用戶權(quán)限,如果是admin設(shè)置$is_admin變量為true,然后下面判斷此變量是否為true,然后執(zhí)行管理的一些操作
//ex1.php
if (check_admin())
{
$is_admin = true;
}
if ($is_admin)
{
do_something();
}
?>
這一段代碼沒(méi)有將$is_admin事先初始化為Flase,如果register_globals為On,那么我們直接提交 http://www.sectop.com/ex1.php?is_admin=true,就可以繞過(guò)check_admin()的驗(yàn)證
例2:
復(fù)制代碼 代碼如下:
//ex2.php
if (isset($_SESSION["username"]))
{
do_something();
}
else
{
echo "您尚未登錄!";
}
?>
復(fù)制代碼 代碼如下:
//ex1.php
$dir = $_GET["dir"];
if (isset($dir))
{
echo "";
system("ls -al ".$dir);
echo "";
}
?>
mixed eval(string code_str) //eval注入一般發(fā)生在攻擊者能控制輸入的字符串的時(shí)候
//ex2.php
復(fù)制代碼 代碼如下:
$var = "var";
if (isset($_GET["arg"]))
{
$arg = $_GET["arg"];
eval("$var = $arg;");
echo "$var =".$var;
}
?>
您可能感興趣的文章:
- PHP編程中的常見(jiàn)漏洞和代碼實(shí)例
- ThinkPHP框架任意代碼執(zhí)行漏洞的利用及其修復(fù)方法
- 對(duì)于ThinkPHP框架早期版本的一個(gè)SQL注入漏洞詳細(xì)分析
- php5系列的apache遠(yuǎn)程執(zhí)行漏洞攻擊腳本
- php is_numberic函數(shù)造成的SQL注入漏洞
- PHP程序漏洞產(chǎn)生的原因分析與防范方法說(shuō)明
- php中sql注入漏洞示例 sql注入漏洞修復(fù)
- php漏洞之跨網(wǎng)站請(qǐng)求偽造與防止偽造方法
- PHP漏洞全解(詳細(xì)介紹)
- PHP代碼網(wǎng)站如何防范SQL注入漏洞攻擊建議分享
- PHP 小心urldecode引發(fā)的SQL注入漏洞
- php中Y2K38的漏洞解決方法實(shí)例分析
相關(guān)文章
PHP下操作Linux消息隊(duì)列完成進(jìn)程間通信的方法
當(dāng)我們開(kāi)發(fā)的系統(tǒng)需要使用多進(jìn)程方式運(yùn)行時(shí),進(jìn)程間通信便成了至關(guān)重要的環(huán)節(jié)。消息隊(duì)列(message queue)是Linux系統(tǒng)進(jìn)程間通信的一種方式。2010-07-07
php計(jì)數(shù)排序算法的實(shí)現(xiàn)代碼(附四個(gè)實(shí)例代碼)
計(jì)數(shù)排序(Counting sort)是一種根據(jù)小整數(shù)鍵對(duì)一組對(duì)象排序的算法;也就是說(shuō),它是一個(gè)整數(shù)排序算法。它通過(guò)計(jì)算具有不同鍵值的對(duì)象的數(shù)量,并對(duì)這些數(shù)量使用算術(shù)來(lái)確定輸出序列中每個(gè)鍵值的位置2020-03-03
詳解php內(nèi)存管理機(jī)制與垃圾回收機(jī)制
在PHP中,沒(méi)有任何變量指向這個(gè)對(duì)象時(shí),這個(gè)對(duì)象就成為垃圾。PHP會(huì)將其在內(nèi)存中銷毀;這是PHP的GC垃圾處理機(jī)制。PHP的內(nèi)存管理,分為倆部分, 第一部分是PHP自身的內(nèi)存管理,而第二部分是zend_alloc中描寫(xiě)的關(guān)于PHP自身的內(nèi)存管理。本文將詳細(xì)介紹這兩個(gè)內(nèi)容。2021-05-05
解析PHP的Yii框架中cookie和session功能的相關(guān)操作
這篇文章主要介紹了PHP的Yii框架中cookie和session功能的相關(guān)操作,需要的朋友可以參考下2016-03-03
FastCGI 進(jìn)程意外退出造成500錯(cuò)誤
這篇文章主要介紹了FastCGI 進(jìn)程意外退出造成500錯(cuò)誤的相關(guān)資料,需要的朋友可以參考下2015-07-07
PHP+AJAX實(shí)現(xiàn)無(wú)刷新注冊(cè)(帶用戶名實(shí)時(shí)檢測(cè))
PHP+AJAX實(shí)現(xiàn)無(wú)刷新注冊(cè)(帶用戶名實(shí)時(shí)檢測(cè))...2007-01-01
php更改目錄及子目錄下所有的文件后綴擴(kuò)展名的代碼
今天遇到要改變當(dāng)前目錄下指定類型的文件類型,本來(lái)想要用批處理來(lái)做這個(gè),結(jié)果沒(méi)找到合適。就自己去查了下資料,用Php來(lái)處理一下。2010-10-10
php中運(yùn)用http調(diào)用的GET和POST方法示例
調(diào)用的GET和POST方法,使用到的函數(shù)是curl_init, curl_setopt, curl_exec,curl_close,默認(rèn)是GET方法2014-09-09

