999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于PHP安全模板引擎的設計與實現

2014-10-21 14:24:29劉倍雄臧艷輝
電子世界 2014年12期
關鍵詞:引擎數據庫系統

劉倍雄 臧艷輝

【摘要】本文提出了一種自定義的基于PHP模板引擎的安全設計方法,針對編譯型模板引擎,總結了PHP當中的不安全的因素,使用正則匹配實現對編譯模板安全過濾,提高了模板引擎的安全性。

【關鍵詞】模板引擎;模板安全

PHP是一種被廣泛使用的腳本語言,尤其適合于web開發,它具有跨平臺,容易學習,功能強大等特點,很多知名的web應用系統都是使用php開發的,如Discuz、phpwind、wordpress、boblog等等。由于PHP系統程序大多數采用編譯型模板引擎機制,故從模板出發,攻擊網站成為功能,本文從模板引擎出發,對PHP模板安全機制做了系統的分析和設計,有效地對PHP危險函數操作進行安全過濾,提高系統的安全性,降低黑客從模板引擎攻擊的危險性。

1.編譯型模板引擎工作原理

在模板引擎的運行中,編譯型模板接到URL請求后,首先需要判斷是否第一次請求該URL,如果是則將該URL所需的HTML模板文件編譯成PHP文件,然后進行重定向;否則則認為該URL的模板已經被編譯過了,可以立即重定向。編譯型模板除了第一次編譯的成本比較高之外,只要不修改模板文件,編譯好的 cache腳本就隨時調用,從而省去了大量的解釋時間。由編譯模板的工作機制可以看出,只要從HTML的模板出發,就可以達到攻擊網站的目的,可以嵌入惡意代碼,加入隱藏鏈接或復制、刪除文件的目的。

2.模板引擎危險因素分析

在PHP當中危險的操作有很多,如刪除數據表、刪除數據、刪除文件,復制文件,下載文件,修改Session和Cookie數據,上傳和解壓文件等等,現將有關PHP編譯型模板引擎的危險因素總結如下:

1)不允許直接操作數據庫。禁止直接鏈接數據庫并執行數據庫操作函數,系統使用數據庫操作類封裝的方法操作數據庫,在操作過程當中嚴格過濾危險SQL腳本代碼,如XSS腳本,又叫CSS (Cross Site Script,簡稱跨站腳本攻擊),惡意攻擊者往Web頁面里插入惡意HTML代碼,或禁止用戶直接執行數據庫操作語句,直接調用遠程惡意數據庫數據,危險函數有mysql_開頭的數據庫管理函數,如mysql_query()。

2)不允許修改session,禁止對session進行操作,防止黑客偽造session數據登錄網站或者獲取更高級的web管理權限,對網站安全構成實質性威協,危險的函數有init_session、set_session、delete_session。

3)不允許使用多重變量和變量函數。對模板的編譯,將使用一次性編譯,對多重變量和變量函數將不再進行編譯轉化,從而有效地提高模板引擎的效率和降低黑客偽造函數的機率。

4)禁止使用ftp相關函數。禁止通過執行FTP函數來上傳及下載文件。并禁止創新新的對象,并給對象賦值,防止執行危險操作類,如解壓、打包文件。

5)禁止使用以preg開頭的正則表達式匹配函數。禁止使用如preg_match函數進行正則表達式匹配操作,防止黑客通過字符串拼接和替換的操作來構造拼接成危險操作函數,如preg_replace('/xx/e','file_put'.'_contents("\$1")')。

6)禁止調用文件函數。防止黑客對系統文件進行篡改、復制、生成和刪除文件,同時防止讀入遠程文件,主要的函數有opendir、readdir 、readdir 、file_get_contents 、file_put_contents、file、touch、tmpfile、chown、chgrp、chmod、rename、tempnam、fopen、fsockopen、fread、fgets、fclose、fputs、fwrite、unlink、rm、write_file、read_file、readfile、fopen、fsockopen、fread、fgets、fclose、fputs、fwrite、unlink、rm、write_file、read_file、readfile等。

7)禁止引用其他文件。禁止在模板當中使得include、include_once、require、require_once引用除了系統模板之外的模板或文件,防止引用惡意文件。

8)除了以上危險因素,其它主要的危險函數操作有:getenv、eval、create_function、exec、system、passthru、pcntl_exec、phpinfo、define、dl、call_user_func、call_user_method、register_shutdown_function、register_tick_function、debug_backtrace、debug_print_backtrace、show_source、highlight_file、header、debug_zval_dump。

3.自定義模板引擎實現

對HTML模板,使用模板引擎進行編譯,在編譯過程中,對HTML模板使用preg_match_all進行全局正則表達式匹配,以檢測模板當中是否包含危險函數,如果匹配到相關的危險函數,則進行報錯輸出,并將錯誤輸出到PHP模板當中,從而達到安全提示和防護的作用,實現的關鍵代碼如下:

/*

$d_func 定義危險函數集

*/

$d_func =

//變量函數不允許使用

'\$[^\(\)\{\}\|\?\.\/\*\s<;=,&!%]+|'.

//危險函數也不允許使用

'eval|create_function|exec|system|passthru|pcntl_exec|phpinfo|define|dl|call_user_func|call_user_method|register_shutdown_function|register_tick_function|debug_backtrace|debug_print_backtrace|show_source|highlight_file|init_session|set_session|delete_session|header|debug_zval_dump|'.

//禁止使用mysql,ftp相關函數

'mysql\w+|ftp_\w+|'.

//禁止使用preg開頭的函數

'preg_replace|preg_replace_callback|preg_filter|'.

//禁止調用文件函數

'opendir|readdir|rmdir|file_get_contents|file_put_contents|file|touch|tmpfile|chown|chgrp|chmod|rename|tempnam|fopen|fsockopen|fread|fgets|fclose|fputs|fwrite|unlink|rm|write_file|read_file|readfile';

/*

$template_safe定義安全過濾數組

*/

$template_safe = array(

'db' => '/(DB_master|DB_slave)/i', //不允許直接操作數據庫

'ref' => '/(=|\(|,)\s*&\s*\$/i', //禁止引用賦值

'session' => '/(ETSESSION|_ETSESSION)/i', //不允許改session

'vvar' => '/\$[\s\{\$]/i', //禁止多重變量

'function' => '/('.$d_func .')\s*\([\s\S]*?\)/i', //危險函數

'obj' => '/(?:new|clone)\s+\$*'.$var .'/i', //不允許創建新對象

'assign' => '/\$[a-zA-Z_\x7f-\xff][^-\$]*?->[^=;\(\)\{\}]+?=/i', //禁止給對象賦值

'include' => '/(include_once|require_once|include|require)(?![a-zA-Z0-9_]+|\s+template\()/i'

//禁止通過系統定義的include template()之外的include引用模板

);

/*

用foreach進行遍歷,preg_match_all進行正則匹配,檢測模板當中的危險函數

*/

foreach($template_safe as $k => $v){

$s = '';

if(preg_match_all($v,$t,$m)){

foreach($m[1] as $i => $func){

$s = $m[0][$i];

break;

}

}

}

4.結論

對PHP編譯型模板,本文嘗試從HTML模板及編譯過程出發,總結歸類出針對模板引擎的危險操作函數,在編譯過程中,通過正則匹配過濾危險函數,保證了編譯型模板引擎的安全,從而降低黑客從模板引擎攻擊網站的成功率,達到預期的效果。

參考文獻

[1]劉佳,盧顯良.小型高效模板引擎的設計與實現[J].計算機應用研究,2006,23(4):222-224.

[2]屈建明,陳潔.FreeMarker模板引擎動態生成網頁的應用研究[J].計算機與現代化,2011(003):121-123.

[3]流年.ThinkTempIate模板引擎的設計[J].軟件世界,2007(11):44-45.

[4]姬一文,吳慶波,楊沙洲.一種服務器端模板引擎的改進與實現倡[J].計算機應用研究,2011,28(3).

[5]南軼,李先國.模板技術在內容管理系統中的研究與應用[J].微電子學與計算機,2012, 29(006):180-184.

[6]徐杰.PHP編譯型模板的設計與實現[J].信息系統工程,2012(4):38-39.

猜你喜歡
引擎數據庫系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
藍谷: “涉藍”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
主站蜘蛛池模板: 色婷婷色丁香| 在线观看国产精美视频| 91久久夜色精品| 欧美成人免费一区在线播放| 999精品色在线观看| 特级aaaaaaaaa毛片免费视频| 久久久久亚洲AV成人网站软件| 刘亦菲一区二区在线观看| 九九免费观看全部免费视频| 欧美成人一区午夜福利在线| 99国产精品免费观看视频| 亚洲午夜天堂| 亚洲男人天堂网址| 久久久久国产一级毛片高清板| 国产va欧美va在线观看| 色男人的天堂久久综合| 四虎成人免费毛片| 丰满人妻久久中文字幕| 日韩亚洲综合在线| 成人福利在线视频免费观看| 国产午夜福利在线小视频| 国产三级国产精品国产普男人| 国产成人综合久久| 欧洲精品视频在线观看| аv天堂最新中文在线| 亚洲一欧洲中文字幕在线| 久久激情影院| 中文字幕自拍偷拍| 国产精品白浆无码流出在线看| 国产乱人伦AV在线A| 高清视频一区| 国产欧美日本在线观看| 亚洲系列中文字幕一区二区| 毛片视频网| 国产精品亚洲综合久久小说| 啪啪国产视频| 最新日本中文字幕| 九九精品在线观看| 日韩精品久久无码中文字幕色欲| 国产精品深爱在线| 亚洲综合第一区| 欧美成人手机在线观看网址| 欧美无专区| 1024国产在线| 免费99精品国产自在现线| 亚洲综合天堂网| 国产视频欧美| 影音先锋亚洲无码| 97影院午夜在线观看视频| 亚洲国产一成久久精品国产成人综合| 欧洲熟妇精品视频| 日韩天堂视频| 中文字幕伦视频| 毛片基地美国正在播放亚洲| 制服丝袜亚洲| 国产精品视频猛进猛出| 日韩在线永久免费播放| 久久精品人妻中文视频| 日本道综合一本久久久88| 国产在线八区| 国产欧美日韩视频怡春院| 成人午夜视频免费看欧美| 欧美中文一区| 成人综合久久综合| 国产午夜人做人免费视频中文 | 亚洲中文精品久久久久久不卡| 欧美日一级片| 青草午夜精品视频在线观看| 91在线无码精品秘九色APP| 欧美精品高清| 日本欧美在线观看| 72种姿势欧美久久久大黄蕉| 91免费国产高清观看| 91免费精品国偷自产在线在线| 久久这里只有精品国产99| 亚洲综合婷婷激情| 国产午夜精品鲁丝片| 国产九九精品视频| 天堂va亚洲va欧美va国产 | 国产成人欧美| 直接黄91麻豆网站| 久久久久久尹人网香蕉 |