|
來源:ChinaASP
之所以翻譯這篇文章,是因為目前關于CGI安全性的文章都是拿Perl作為例子,而專門介紹ASP,php或者JSP安全性的文章則很少。Shaun Clowes的這篇文章比較全面地介紹了php的安全問題,原文可以在http://www.securereality.com.au/stu...arlet.txt找到。
由于原文比較長,而且有相當一部分是介紹文章的背景或php的基礎知識,沒有涉及到php安全方面的內容,因此我沒有翻譯。如果你想了解這方面的知識,請參考原文。
文章主要從全局變量,遠程文件,文件上載,庫文件,Session文件,數據類型和容易出錯的函數這幾個方面分析了php的安全性,并且對如何增強php的安全性提出了一些有用的建議。
好了,廢話少說,我們言歸正傳!
[全局變量]
php中的變量不需要事先聲明,它們會在第一次使用時自動創建,它們的類型也不需要指定,它們會根據上下文環境自動確定。從程序員的角度來看,這無疑是一種極其方便的處理方法。很顯然,這也是快速開發語言的一個很有用的特點。一旦一個變量被創建了,就可以在程序中的任何地方使用。這個特點導致的結果就是程序員很少初始化變量,畢竟,當它們第一次創建時,他們是空的。
很顯然,基于php的應用程序的主函數一般都是接受用戶的輸入(主要是表單變量,上載文件和Cookie等),然后對輸入數據進行處理,然后把結果返回到客戶端瀏覽器。為了使php代碼訪問用戶的輸入盡可能容易,實際上php是把這些輸入數據看作全局變量來處理的。
例如:
<FORM METHOD="GET" ACTION="test.php">
<INPUT TYPE="TEXT" NAME="hello">
<INPUT TYPE="SUBMIT">
</FORM>
很顯然,這會顯示一個文本框和提交按鈕。當用戶點擊提交按鈕時,“test.php”會處理用戶的輸入,當“test.php”運行時,“$hello”會包含用戶在文本框輸入的數據。從這里我們應該看出,攻擊者可以按照自己的意愿創建任意的全局變量。如果攻擊者不是通過表單輸入來調用“test.php”,而是直接在瀏覽器地址欄輸入http://server/test.php?hello=hi&set... 主站蜘蛛池模板: 红原县| 汝南县| 新河县| 揭西县| 尚义县| 巨野县| 治县。| 邢台市| 达州市| 贵阳市| 迁西县| 彭州市| 于田县| 甘南县| 大兴区| 石家庄市| 青海省| 东乌珠穆沁旗| 阿坝县| 罗平县| 越西县| 新化县| 五指山市| 菏泽市| 泰安市| 淳化县| 百色市| 阳城县| 益阳市| 如皋市| 姚安县| 锡林郭勒盟| 高淳县| 富民县| 西藏| 双辽市| 建昌县| 南开区| 临清市| 霍山县| 南康市|