电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

PHP安全-函數

瀏覽:106日期:2022-09-11 17:39:21
函數

在我寫作本書的時候,http://php.net/quickref.php列出了共3917個函數,其中包括一些類似函數的語法結構,在此我不準備把它們從函數中區分開來,而是把它作為函數看待。

由于函數數量很大,一一說明它們的正確及安全用法是不太可能的。在此我選出了我認為最需要注意的函數。選擇的標準包括使用的頻繁度、使用時的危險(安全)度及我本人的經驗。

對于每一個列出的函數,我都會提供推薦的使用方法。在提出這些方法時,我會把安全作為重點考慮。請在實際使用時根據你的需求進行相應調整。

當一個函數與另一個有相同的風險時,我會給出參見另一個函數的信息,而不是多余地再次描述一遍。

B.1. eval( )

eval( )函數用于對一個字符串以PHP語句方式解析運行。如:

<?php

$name = ’Chris’;

$string = ’echo 'Hello, $name';’;

eval($string);

?>

上例中會把$string作為PHP語句來運行,因此等價于:

<?php

$name = ’Chris’;

echo 'Hello, $name';

?>

雖然eval( )非常有用,但是當使用了被污染數據時會非常危險。例如,在下例中,如果$name是被污染的,攻擊者可以任意運行PHP代碼:

<?php

$name = $_GET[’name’];

eval($name);

?>

當你無法確信以PHP方式解釋的字符串是否使用被污染數據時,以及在可能的情況下,我推薦你避免使用eval( )。在安全審查和同行評審中,應重點檢查該函數。

B.2. exec( )

第6章中已提到,執行shell命令是非常危險的操作,在構造shell命令時使用被污染數據會導致命令注入漏洞。

盡量避免使用shell命令函數,但當你需要用它們時,請確信構造shell命令時只使用過濾及轉義過的數據。

<?php

$clean = array();

$shell = array();

/* Filter Input ($command, $argument) */

$shell[’command’] = escapeshellcmd($clean[’command’]);

$shell[’argument’] = escapeshellarg($clean[’argument’]);

$last = exec('{$shell[’command’]} {$shell[’argument’]}', $output, $return);

?>

B.3. file( )

file( )函數是我喜歡使用的讀文件方法之一。它會讀取文件的每一行作為返回數組的元素。特別方便的一點是,你不需要提供一個文件句柄——你提供文件名,它會為你做好一切:

<?php

$contents = file(’/tmp/file.txt’);

print_r($contents);

?>

如果上面的文件有兩行,則會產生類似如下的輸出:

Array

(

[0] => This is line one.

[1] => This is line two.

)

使用file( )函數不是特別危險,但當你在allow_url_fopen選項打開的情況下使用時,它就能讀取許多不同類型的資源如一個遠程網站的內容:

<?php

$contents = file(’http://example.org/’);

print_r($contents);

?>

輸出如下 (有刪節):

Array

(

[0] => <html>

[1] => <head>

[2] => <title>Example Web Page</title>

[3] => </head>

[4] => <body>

...

[11] => </body>

[12] => </html>

)

如果file()函數調用的文件名是由被污染數據構造的,則其內容也應被看成是被污染的。這是因為使用被污染數據構造文件名可能會導致你打開一個有惡意數據的遠程網站。一旦你把數據保存在一個變量中,危險就大幅增加了:

<?php

$tainted = file($_POST[’filename’]);

?>

$tainted數組中的每個元素與$_POST[’filename’]有相同的危險性——它是輸入并必須要進行過濾。

在這里,其行為有可能是意想不到的——$_POST[’filename’]的誤用可以改變file()函數的行為,因此它可以指向一個遠程資源而不是本地文件。

B.4. file_get_contents( )

參見 'file( ).'

B.5. fopen( )

參見 'file( ).'

B.6. include

如第5章所述,include在組織化與模塊化的軟件設計中被普遍使用,是非常有必要的。但是,不正確的使用include會造成一個重大的代碼注入安全漏洞。

在include語句中只使用已過濾數據是非常有必要的。在安全審查和同行評審中,應重點檢查該函數。

B.7. passthru( )

見'exec( ).'

B.8. phpinfo( )

phpinfo( )會輸出有關PHP信息的頁面——運行的版本號,配置信息等等。由于phpinfo( )的輸出提供了非常多的信息,我建議限制對任何使用該函數的資源的訪問。

如果你使用的第八章中的技巧來保護數據庫驗證信息,則需要確認訪問者不能看到由phpinfo( )形成的輸出信息,這是由于它會暴露超級全局數組$_SERVER的內容。

B.9. popen( )

參見'exec( ).'

B.10. preg_replace( )

preg_replace( )用于對符合正則表達式的字符串進行替換。在某些情況下,使用被污染數據構造正則表達式部分會非常危險,因為它的e修飾符會導致在替換時把用于替換的參數作為PHP代碼來對待。例如(本例為譯者所加):

<?php

$str = 'abcdef';

$se = 'len';

$reg = '/abc/e';

echo preg_replace($reg,'strlen($se)',$str);

?>

會輸出如下字串:

3def

當使用了e修飾符,不管是否有意為之,它會帶來與eval()相同的風險。在安全審查和同行評審中,應重點檢查該函數。

B.11. proc_open( )

參見 'exec( ).'

B.12. readfile( )

參見 'file( ).'

B.13. require

參見 'include.'

B.14. shell_exec( )

參見 'exec( ).'

B.15. system( )

參見 'exec( ).'

標簽: PHP
相關文章:
主站蜘蛛池模板: 玻璃瓶厂家_酱菜瓶厂家_饮料瓶厂家_酒瓶厂家_玻璃杯厂家_徐州东明玻璃制品有限公司 | 垃圾压缩设备_垃圾处理设备_智能移动式垃圾压缩设备--山东明莱环保设备有限公司 | 茶楼装修设计_茶馆室内设计效果图_云臻轩茶楼装饰公司 | 诚暄电子公司首页-线路板打样,pcb线路板打样加工制作厂家 | 深圳3D打印服务-3D打印加工-手板模型加工厂-悟空打印坊 | 公交驾校-北京公交驾校欢迎您! 工作心得_读书心得_学习心得_找心得体会范文就上学道文库 | 拉力测试机|材料拉伸试验机|电子拉力机价格|万能试验机厂家|苏州皖仪实验仪器有限公司 | 无线遥控更衣吊篮_IC卡更衣吊篮_电动更衣吊篮配件_煤矿更衣吊篮-力得电子 | 线粒体膜电位荧光探针-细胞膜-标记二抗-上海复申生物科技有限公司 | 多功能真空滤油机_润滑油全自动滤油机_高效真空滤油机价格-重庆润华通驰 | 软文发布平台 - 云软媒网络软文直编发布营销推广平台 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 水冷式工业冷水机组_风冷式工业冷水机_水冷螺杆冷冻机组-深圳市普威机械设备有限公司 | 连续油炸机,全自动油炸机,花生米油炸机-烟台茂源食品机械制造有限公司 | 无锡网站建设-做网站-建网站-网页设计制作-阿凡达建站公司 | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | 耳模扫描仪-定制耳机设计软件-DLP打印机-asiga打印机-fitshape「飞特西普」 | PU树脂_水性聚氨酯树脂_聚氨酯固化剂_聚氨酯树脂厂家_宝景化工 | 深圳工程师职称评定条件及流程_深圳职称评审_职称评审-职称网 | 小型UV打印机-UV平板打印机-大型uv打印机-UV打印机源头厂家 |松普集团 | 食药成分检测_调料配方还原_洗涤剂化学成分分析_饲料_百检信息科技有限公司 | 冲锋衣滑雪服厂家-冲锋衣定制工厂-滑雪服加工厂-广东睿牛户外(S-GERT) | 气象监测系统_气象传感器_微型气象仪_气象环境监测仪-山东风途物联网 | 转子泵_凸轮泵_凸轮转子泵厂家-青岛罗德通用机械设备有限公司 | 选矿设备,选矿生产线,选矿工艺,选矿技术-昆明昆重矿山机械 | 建筑工程资质合作-工程资质加盟分公司-建筑资质加盟 | 间苯二酚,间苯二酚厂家-淄博双和化工 | 成都茶楼装修公司 - 会所设计/KTV装修 - 成都朗煜装饰公司 | 微型气泵-真空-蠕动-水泵-厂家-深圳市品亚科技有限公司 | 威海防火彩钢板,威海岩棉复合板,威海彩钢瓦-文登区九龙岩棉复合板厂 | Copeland/谷轮压缩机,谷轮半封闭压缩机,谷轮涡旋压缩机,型号规格,技术参数,尺寸图片,价格经销商 CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 不锈钢监控杆_监控立杆厂家-廊坊耀星光电科技有限公司 | 酵素生产厂家_酵素OEM_酵素加盟_酵素ODM_酵素原料厂家_厦门益力康 | 喷码机,激光喷码打码机,鸡蛋打码机,手持打码机,自动喷码机,一物一码防伪溯源-恒欣瑞达有限公司 | 新型锤式破碎机_新型圆锥式_新型颚式破碎机_反击式打沙机_锤式制砂机_青州建源机械 | 不锈钢复合板厂家_钛钢复合板批发_铜铝复合板供应-威海泓方金属复合材料股份有限公司 | 聚丙烯酰胺_阴离子_阳离子「用量少」巩义亿腾厂家直销,售后无忧 聚合甘油__盐城市飞龙油脂有限公司 | 冷轧机|两肋冷轧机|扁钢冷轧机|倒立式拉丝机|钢筋拔丝机|收线机-巩义市华瑞重工机械制造有限公司 | 热处理温控箱,热处理控制箱厂家-吴江市兴达电热设备厂 | 广州各区危化证办理_危险化学品经营许可证代办 | 户外环保不锈钢垃圾桶_标识标牌制作_园林公园椅厂家_花箱定制-北京汇众环艺 |