PHP漏洞:命令注入攻擊
php語言2.99W
計算機程序中都會有漏洞,那麼在PHP中該怎麼防止注入攻擊呢?下面是小編整理的解決辦法,希望對大家有用,更多消息請關注應屆畢業生網。 命令注入攻擊,PHP中可以使用下列5個函數來執行外部的應用程序或函數 system、exec、passthru、shell_exec、“(與shell_exec功能相同) 函數原型 stringsystem(stringcommand,int&return_var) command要執行的命令 return_var存放執行命令的執行後的狀態值 stringexec(stringcommand,array&output,int&return_var) command要執行的命令 output獲得執行命令輸出的每一行字符串 return_var存放執行命令後的狀態值 voidpassthru(stringcommand,int&return_var) command要執行的命令 return_var存放執行命令後的狀態值 stringshell_exec(stringcommand) command要執行的命令 漏洞實例 例1: // $dir=$_GET["dir"]; if(isset($dir)) { echo" "; system("ls-al".$dir); echo" "; } ?> 我們提交|cat/etc/passwd 提交以後,命令變成了system("ls-al|cat/etc/passwd"); eval注入攻擊 eval函數將輸入的.字符串參數當作PHP程序代碼來執行 函數原型: mixedeval(stringcode_str)//eval注入一般發生在攻擊者能控制輸入的字符串的時候 // $var="var"; if(isset($_GET["arg"])) { $arg=$_GET["arg"]; eval("$var=$arg;"); echo"$var=".$var; } ?> 當我們提交();漏洞就產生了; 動態函數 php funcA() { dosomething(); } funcB() { dosomething(); } if(isset($_GET["func"])) { $myfunc=$_GET["func"]; echo$myfunc(); } ?> 程序員原意是想動態調用A和B函數,那我們提交漏洞產生 防範方法 1、儘量不要執行外部命令 2、使用自定義函數或函數庫來替代外部命令的功能 3、使用escapeshellarg函數來處理命令參數 4、使用safe_mode_exec_dir指定可執行文件的路徑 esacpeshellarg函數會將任何引起參數或命令結束的字符轉義,單引號“’”,替換成“’”,雙引號“"”,替換成“"”,分號“;”替換成“;” 用safe_mode_exec_dir指定可執行文件的路徑,可以把會使用的命令提前放入此路徑內 safe_mode=On safe_mode_exec_dir=/usr/local/php/bin/
-
如何運用PHP實現字符串逆序排列
如何運用PHP實現字符串逆序排列呢?下面是小編給大家提供的實現方法,大家可以參考練習,更多詳情請關注應屆畢業生考試網。關於字符串的逆序排列,最簡單的使用PHP函數strrev()的測試代碼如下:header('Content-type:text/html;charset=utf-8');$str=implode(&...
-
PHP數據類型之數組變量詳解
導語:PHP是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。下面我們來看看PHP數據類型之數組變量詳解,希望對大家有所幫助。PHP中的數組實際上是一個有序圖,是一種把values映射到keys的類型。一個數組實際上就...
-
php新手易犯的幾個小錯誤
本文為大家列舉了php新手易犯的幾個小錯誤,供大家參考。1、headeralreadysent這個錯誤通常會在你使用HEADER的時候出現,他可能是幾種原因。跟隨小編去看看吧!1、headeralreadysent這個錯誤通常會在你使用HEADER的時候出現,他可能是幾種原因:1,你在使用HEADER前PRING...
-
PHP程序員基本要求和必備技能
PHP程序員有什麼必備知識呢?以下是本站小編精心為大家整理的PHP程序員基本要求和必備技能,希望對大家成為程序員有所幫助!更多內容請關注應屆畢業生網!一名PHP程序員的基本要求:1、精通html、CSS、JS等網站前端技術。2、掌握PHP編程技術。3、瞭解Linux及Apache、...