當前位置:首頁 >  站長 >  建站經(jīng)驗 >  正文

如何從網(wǎng)站開發(fā)角度提高php安全漏洞的防范

 2014-03-21 10:30  來源: A5專欄   我來投稿 撤稿糾錯

  域名預訂/競價,好“米”不錯過

目前PHP因其功能強大、入門簡單、代碼執(zhí)行效率高等優(yōu)點,成為了Web應用開發(fā)的流行語言。由于使用廣泛,所以利用PHP安全漏洞對Web網(wǎng)站進行的攻擊也越來越多,這給Web應用的安全帶來了嚴重威脅。對網(wǎng)站的安全負有直接責任的主要有兩類人員:一類是網(wǎng)站開發(fā)人員;一類是網(wǎng)站管理人員。本文筆者就從網(wǎng)站開發(fā)的角度,對PHP安全漏洞的防范進行了較為全面的總結、研究。

對以往大量攻擊案例的研究表明,PHP安全漏洞的產生原因主要是沒有對用戶的輸人進行嚴格的驗證和對系統(tǒng)的輸出沒有進行適當?shù)霓D義。用戶的輸入永遠是不可以盲目相信的,在沒有進行驗證前,都可以認為是被污染數(shù)據(jù)。系統(tǒng)的愉出在沒有適當轉義前,也有可能帶來較大的安全風險。

1、未對用戶輸入進行嚴格驗證產生安全漏洞及其防范

考慮一個系統(tǒng)的登錄驗證,此系統(tǒng)要求用注冊時所填的郵箱和密碼登錄。一般情況下,只要輸入正確即可登錄,如果輸人錯誤則不允許登錄,這是通常的處理流程。其程序實現(xiàn)一般是,通過一個登錄表單獲取用戶輸入的郵箱和密碼,然后傳遞給程序以構造一個SQL查詢語句,例如:select count(*)from users where email='myemail@163.com'and password='mypass',再將此SQL語句提交給后臺數(shù)據(jù)庫執(zhí)行,若返回的記錄數(shù)為0,則說明輸人的郵箱信息或密碼有誤或用戶根本沒有注冊,系統(tǒng)拒絕其登錄,反之則為合法用戶,允許其登錄。這套驗證流程對于一般的客戶是十分奏效的,其若沒有注冊亦或沒有袖人正確的郵箱和密碼都是不能登錄系統(tǒng)的。但對于黑客來說,情況就不一樣了。其完全可以精心設計一個字符串來代替合法郵箱地址從而繞過系統(tǒng)的驗證,例如:若黑客輸人的郵箱地址是“myemail"orI=I--"、密碼是"myppass",此時SQL語句變?yōu)閟elect count(*)from users wherer email='myemail' or I=I--" and password='mypass' ,此語句執(zhí)行后所返回的記錄數(shù)是users表的所有記錄總數(shù),并不為0,所以通過了系統(tǒng)的登錄驗證,系統(tǒng)允許其登錄。這就是著名的SQL注入攻擊。導致這個后果的原因是黑客精心構造了一個字符串用于代替合法郵箱地址且系統(tǒng)并未對用戶輸入的數(shù)據(jù)本身進行合法性檢查。

為了對上述PHP安全漏洞進行防范,我們可以對用戶的輸人進行合法性驗證。此處要求入的是郵箱地址,為了對用戶輸入的數(shù)據(jù)本身進行合法性檢查,我們可以用正則表達式對用戶輸人的郵箱地址進行驗證,看是否符合正確的郵箱格式,這樣就可以大大增加黑客設計特殊字符串的難度,在一定程度上防止SQL注人漏洞的產生。

在任何悄況下,如果對用戶的輸人均進行嚴格的驗證,當然,驗證方法根據(jù)不同情況而有所不同,并不局限于正則表達式,這就可以在很大程度上對PHP安全漏洞進行防范。

2、未對系統(tǒng)的輸出進行適當轉義產生安全漏洞及其防范

未對系統(tǒng)的輸出進行適當轉義也會產生安全漏洞,跨站腳本漏洞就是一個很著名的例子。假設有一個可以發(fā)表評論的系統(tǒng),其采用表單的形式進行數(shù)據(jù)提交。對于一般用戶,這不會有什么太大間題,但是對于黑客,問題就來了。因為黑客并不是真的想發(fā)表什么評論,其有可能是想盜取其他登錄用戶的cookies。為了盜取其他錄用戶的cookies, 黑可以將javascript代碼作為評論內容進行提交。

如果在輸出前對黑客所提交的內容不做任何轉義的話,那么lavascript代碼將被其他用戶的瀏覽器所執(zhí)行,從而將瀏覽評論的其他登錄用戶的cookies信息發(fā)送到黑客手上。為了防范上述跨站腳本漏洞攻擊,我們所要采取的措施很簡單:在將評論內容輸出到客戶端瀏覽器之前,利用htmlentities()函數(shù)對輸出內容進行轉義。此函數(shù)可以將輸出內容當中可能包含的html標簽轉換成html實體,從而使得黑客輸入的Javascript代碼不被執(zhí)行。

任何情況下,對于系統(tǒng)的輸出都應該進行適當?shù)霓D義(轉義方法根據(jù)不同情況而有所不同,并不局限于htmlentities()函數(shù)),這樣才不會讓黑客有機可乘。

聲明:本文由鄭州批發(fā)市場: 原創(chuàng)投稿,尊重他人成果,轉載請注明出處!

申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!

相關文章

  • PHP5停更,中企動力為你保駕護航

    這兩天你們都心慌慌,為什么?因為市面上的PHP5將于年底停止更新,六成用戶將面臨安全風險。筆者我只能說,這次絕對穩(wěn)了!因為這些語言跟我們沒關系,詳細了解下中企的技術實力!

  • PHP開發(fā)者的Linux學習之路

    談起一個高效動態(tài)網(wǎng)站的構建,那就不得不提到LAMP,即Linux操作系統(tǒng)、Apache網(wǎng)絡服務器、Mysql數(shù)據(jù)庫、Perl、PHP或Python編程語言等開源產品所組成的網(wǎng)站架構框架,其最大的優(yōu)勢是開放性強,安全性高,且成本低廉。因此,LAMP成為了國際流行的網(wǎng)站構建方案。而作為一名php開發(fā)人員

  • PHP二次開發(fā)discuz3.2最新體驗

    康盛官方于6月4號發(fā)布了discuz3.2的正式版,因為這兩天一直忙于一個項目,一直沒來的及體驗,現(xiàn)在抽時間總算是裝上了,也體驗一把。根據(jù)官方說明:Discuz!X3.2在繼承和完善Discuz!X3.1的基礎上,針對社區(qū)移動端進行了新的嘗試。推出微信登錄、微社區(qū)等功能。安全穩(wěn)定的程序為站長提供更加

  • 使用CakePHP框架開發(fā)網(wǎng)站

    現(xiàn)如今成熟的PHP開發(fā)框架有很多種,YII,zendframwork,國內輕量型框架Thinkphp,還有開發(fā)效率很高的CakePHP。公司可以根據(jù)自己的需求選擇合適的開發(fā)框架,在這里,小編以自己公司使用的開發(fā)框架CakePHP作為重點介紹,闡述它的優(yōu)點。CakePHP的簡要介紹:PHP框架已被

  • 漫談社區(qū)PHP業(yè)務開發(fā) 提高效率縮短開發(fā)周期

    在當前這個互聯(lián)網(wǎng)業(yè)務飛速發(fā)展時期,新的產品如雨后春筍般涌出,老產品線新業(yè)務也在不斷突破和嘗試。這就對快速開發(fā)迭代提出了更高的要求。一、基礎運行環(huán)境針對新產品的開發(fā),必須能夠快速搭建一套LAMP架構。那么無外乎選擇一個webserver,選擇一個php版本,選擇一

熱門排行

信息推薦