摘 要:在社會(huì)發(fā)展過(guò)程中,電子商務(wù)行業(yè)得到了迅速的發(fā)展,為動(dòng)態(tài)網(wǎng)絡(luò)的開(kāi)發(fā)應(yīng)用提供了良好的機(jī)遇。現(xiàn)階段常用的動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)技術(shù)主要有ASP技術(shù)、PHP技術(shù)、JSP技術(shù)等。本文以動(dòng)態(tài)網(wǎng)站發(fā)展理論為依據(jù),介紹了PHP動(dòng)態(tài)網(wǎng)絡(luò)開(kāi)發(fā)特點(diǎn),并通過(guò)將PHP與JSP、ASP對(duì)比分析,對(duì)PHP技術(shù)在動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)中的優(yōu)勢(shì)進(jìn)行了總結(jié),并對(duì)PHP技術(shù)在動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)中的應(yīng)用進(jìn)行了適當(dāng)分析。
關(guān)鍵詞:PHP 動(dòng)態(tài)網(wǎng)站 開(kāi)發(fā)
中圖分類(lèi)號(hào):TP39 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1003-9082(2019)01-000-01
前言
PHP主要是在服務(wù)器上,以嵌入式超文本標(biāo)記語(yǔ)言為載體進(jìn)行開(kāi)發(fā)功能的實(shí)現(xiàn)。PHP語(yǔ)言編程風(fēng)格與C語(yǔ)言具有相似性。其在實(shí)際運(yùn)行過(guò)程中,主要是以直接顯示.htm、或者.html后綴文件為依據(jù),提供網(wǎng)絡(luò)服務(wù)。PHP語(yǔ)言是動(dòng)態(tài)網(wǎng)絡(luò)建設(shè)中應(yīng)用較頻繁的語(yǔ)言工具,其不僅可以保障網(wǎng)站動(dòng)態(tài)連接,而且可以為動(dòng)態(tài)網(wǎng)站及時(shí)更新提供良好的幫助。因此,為了保證PHP在動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)中優(yōu)良效用的充分發(fā)揮,對(duì)其應(yīng)用情況進(jìn)行適當(dāng)分析非常必要。
一、開(kāi)發(fā)環(huán)境分析
在當(dāng)前動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)過(guò)程中常用的網(wǎng)站開(kāi)發(fā)技術(shù)主要由PHP、JSP、ASP.NET等。其中PHP技術(shù)在安全性較好,且具有跨平臺(tái)開(kāi)發(fā)應(yīng)用優(yōu)勢(shì),整體運(yùn)行效率較高。同時(shí)由于PHP語(yǔ)言為開(kāi)源語(yǔ)言,可以0成本應(yīng)用,整體開(kāi)發(fā)效益較高;JSP語(yǔ)言安全性能最好,具有良好的兼容性,可以跨平臺(tái)開(kāi)發(fā)運(yùn)用,其運(yùn)行效率最高。但是由于開(kāi)發(fā)語(yǔ)言不易控制,整體開(kāi)發(fā)成本損耗較高;ASP.NET語(yǔ)言雖然具有極強(qiáng)的安全效率,但是安全漏洞較多,且無(wú)法進(jìn)行跨平臺(tái)開(kāi)發(fā)應(yīng)用,在獨(dú)立運(yùn)行時(shí),整體運(yùn)行效率也不夠優(yōu)良,且具有極高的開(kāi)發(fā)資金損耗[1]。
二、PHP在動(dòng)態(tài)網(wǎng)絡(luò)開(kāi)發(fā)中的優(yōu)勢(shì)
依據(jù)上述動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)中,PHP、JSP、ASP.NET三種語(yǔ)言應(yīng)用特點(diǎn),可從開(kāi)發(fā)運(yùn)行平臺(tái)、開(kāi)發(fā)語(yǔ)言及工具、性能、數(shù)據(jù)庫(kù)連接幾個(gè)方面進(jìn)行分析。
1.開(kāi)發(fā)運(yùn)行平臺(tái)
首先現(xiàn)階段微軟及ASP.NET均沒(méi)有跨平臺(tái)性,在A(yíng)SP.NET語(yǔ)言開(kāi)發(fā)過(guò)程中僅可以在微軟服務(wù)器產(chǎn)品中運(yùn)行,并不能在Unix等其他服務(wù)器中運(yùn)行;其次,JSP 可利用Apache平臺(tái)在不同操作系統(tǒng)中運(yùn)行,如Linux、Unix等。同時(shí)由于JSP為Java的一個(gè)模塊,其具有一次編寫(xiě)、終身受用優(yōu)良特點(diǎn)。而JSP語(yǔ)言隨時(shí)取用的特點(diǎn)也可以在需求各異的運(yùn)行平臺(tái)上進(jìn)行移植運(yùn)行;最后,PHP語(yǔ)言開(kāi)發(fā)在保留JSP語(yǔ)言開(kāi)發(fā)優(yōu)勢(shì)的同時(shí),其可支持運(yùn)行的平臺(tái)范圍得到了進(jìn)一步拓展,即其可在A(yíng)pache服務(wù)器支持的情況下,獲得IIS等其他一系列服務(wù)器的支持,在Unix、Linux等操作系統(tǒng)中具有更加優(yōu)良的跨平臺(tái)性能。同時(shí),在現(xiàn)階段PHP語(yǔ)言開(kāi)發(fā)過(guò)程中,也可以通過(guò)Linux+MySQL+Apache平臺(tái)的運(yùn)用,進(jìn)一步降低PHP語(yǔ)言跨平臺(tái)應(yīng)用限制。如PHP在不斷兼容命名空間、closure技術(shù),并添加了魔術(shù)引號(hào),促使安全性能得到了進(jìn)一步提高。
2.開(kāi)發(fā)語(yǔ)言及開(kāi)發(fā)工具
首先,在A(yíng)SP.NET語(yǔ)言程序開(kāi)發(fā)階段,由于VBScrit、JScript等腳本語(yǔ)言簡(jiǎn)便、清晰的特點(diǎn),在A(yíng)SP.NET動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)過(guò)程中,常在微軟Dreamweaver文本編輯平臺(tái)的基礎(chǔ)上,利用VBScrit、JScript等腳本語(yǔ)言進(jìn)行數(shù)據(jù)庫(kù)連接、主頁(yè)瀏覽、頁(yè)面向?qū)У日Z(yǔ)言的開(kāi)發(fā)應(yīng)用。其次,JSP語(yǔ)言在開(kāi)發(fā)過(guò)程中,主要利用JAVA腳本語(yǔ)言進(jìn)行多種開(kāi)發(fā)工具的應(yīng)用,相較于A(yíng)SP.NET語(yǔ)言開(kāi)發(fā),JSP語(yǔ)言開(kāi)發(fā)由于支持廠(chǎng)商較多,且為獨(dú)立的JAVA語(yǔ)言,整體安全性及靈活性較高。最后,PHP語(yǔ)言開(kāi)發(fā)主要利用C JAVA+Perl語(yǔ)言,結(jié)合自身特點(diǎn),可利用多種開(kāi)發(fā)工具,且整體功能開(kāi)發(fā)效率及功能性得到了進(jìn)一步提升。
3.運(yùn)行性能分析
相較于A(yíng)SP.NET及PHP而言,JSP可以進(jìn)行自動(dòng)編譯,隨后獲得部分不太復(fù)雜的指令碼。自動(dòng)生成的指令碼快捷的執(zhí)行速度,可實(shí)現(xiàn)代碼內(nèi)部一次編譯無(wú)限循環(huán)。而PHP具有語(yǔ)言開(kāi)放式的優(yōu)良特點(diǎn),其可以有效吸收用戶(hù)建議,在滿(mǎn)足用戶(hù)需要的同時(shí),也可以有效提高自身運(yùn)行性能,促使軟件、硬件得到持續(xù)的完善優(yōu)化。如在服務(wù)器端網(wǎng)站編程中應(yīng)用PHP,可以在天貓、百度等應(yīng)用PHP框架,從而得出多種職位競(jìng)聘需求。
4.數(shù)據(jù)庫(kù)連接分析
首先,在現(xiàn)階段ASP.NET語(yǔ)言開(kāi)發(fā)過(guò)程中,應(yīng)用頻率較高的數(shù)據(jù)庫(kù)為SQL、ACCESS。其中ACCESS數(shù)據(jù)庫(kù)常用于虛擬主機(jī)用戶(hù)、小站點(diǎn)用戶(hù)數(shù)據(jù)庫(kù)設(shè)置;而SQL則用于規(guī)模較大的數(shù)據(jù)庫(kù)設(shè)置。在SQL大規(guī)模數(shù)據(jù)庫(kù)連接時(shí),主要利用ADO、ODBC等連接方式。其次,JSP在數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)時(shí),主要連接方式為JDBC。若整體動(dòng)態(tài)網(wǎng)站數(shù)據(jù)僅有一種數(shù)據(jù),如ODBC等。則在實(shí)際JSP動(dòng)態(tài)網(wǎng)站訪(fǎng)問(wèn)時(shí),需要JAVA在JSP與數(shù)據(jù)端架設(shè)一個(gè)與JDBC-ODBC有關(guān)的渠道。隨后將JDBC、ODBC數(shù)據(jù)進(jìn)行轉(zhuǎn)化,從而實(shí)現(xiàn)基礎(chǔ)數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)。在數(shù)據(jù)庫(kù)與JDBC連接之后,可在實(shí)現(xiàn)基礎(chǔ)數(shù)據(jù)查詢(xún)的同時(shí)進(jìn)行數(shù)據(jù)提取。最后,PHP語(yǔ)言自身豐富的數(shù)據(jù)操作功能,可以與數(shù)據(jù)庫(kù)進(jìn)行直接連接,甚至可以與MySQL進(jìn)行直接連接,整體運(yùn)行方式更加簡(jiǎn)便[2]。
三、PHP在動(dòng)態(tài)網(wǎng)絡(luò)開(kāi)發(fā)中的應(yīng)用及優(yōu)化
1.PHP技術(shù)動(dòng)態(tài)網(wǎng)站常見(jiàn)安全風(fēng)險(xiǎn)
在PHP技術(shù)動(dòng)態(tài)網(wǎng)站運(yùn)行過(guò)程中,主要安全風(fēng)險(xiǎn)為全局變量、文件上傳、SQL Injection攻擊等幾個(gè)方面。其中文件上傳主要是在PHP定義與Web表單文件同名全局變量的基礎(chǔ)上,相應(yīng)全局變量可作為文件名在服務(wù)器終端默認(rèn)文件臨時(shí)記錄上創(chuàng)建一個(gè)相同的文件。由于文件信息一致,PHP并不會(huì)對(duì)文件名進(jìn)行重復(fù)檢測(cè),這種情況下,惡意攻擊者就可以利用這一特點(diǎn)修改、清除重要數(shù)據(jù)文件信息;全局變量故障主要是在PHP4.2.0以上的版本中,若全部外界默認(rèn)變量均為全局變量,則腳本程序就可以無(wú)限制接收全部用戶(hù)輸入,并將相應(yīng)用戶(hù)輸入信息自動(dòng)轉(zhuǎn)換為全局變量。而PHP變量不需初始化的應(yīng)用模式也導(dǎo)致其腳本服務(wù)器無(wú)法判定相關(guān)變量輸入的正確性,并將其作為正確安全數(shù)據(jù)進(jìn)行錄入。上述情況具有較大的安全風(fēng)險(xiǎn),惡意攻擊者可以利用GET等方式輕易的獲得網(wǎng)站認(rèn)證信息;SQL Injection為PHP動(dòng)態(tài)網(wǎng)站主要數(shù)據(jù)庫(kù)連接方式。由于在PHP數(shù)據(jù)庫(kù)連接中并沒(méi)有對(duì)系統(tǒng)權(quán)限進(jìn)行嚴(yán)格核查,極易發(fā)生惡意攻擊者利用查詢(xún)語(yǔ)言錄入不合法信息,以提高自身訪(fǎng)問(wèn)權(quán)限,獲得動(dòng)態(tài)網(wǎng)站數(shù)據(jù)庫(kù)關(guān)鍵信息,或者對(duì)數(shù)據(jù)庫(kù)整體系統(tǒng)造成破壞[3]。
2.PHP技術(shù)動(dòng)態(tài)網(wǎng)站系統(tǒng)結(jié)構(gòu)
PHP技術(shù)動(dòng)態(tài)網(wǎng)站系統(tǒng)結(jié)構(gòu)主要包括物理結(jié)構(gòu)、系統(tǒng)功能模塊兩個(gè)方面。一方面,在PHP技術(shù)動(dòng)態(tài)網(wǎng)站物理結(jié)構(gòu)設(shè)置中,可選擇APAACHE為Web服務(wù)器,將MySQL作為數(shù)據(jù)庫(kù)。由于A(yíng)PAACHE、MySQL開(kāi)發(fā)性源碼的特點(diǎn),整體PHP技術(shù)動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)基礎(chǔ)資金損耗極低;另一方面,在PHP技術(shù)動(dòng)態(tài)網(wǎng)站系統(tǒng)功能模塊設(shè)置環(huán)節(jié),主要以系統(tǒng)安全防范為依據(jù),進(jìn)行信息管理及用戶(hù)管理。具體為信息編制、頁(yè)面制作、靜態(tài)頁(yè)面發(fā)布、分頁(yè)處理等。PHP技術(shù)動(dòng)態(tài)網(wǎng)站系統(tǒng)主要采用動(dòng)態(tài)信息靜態(tài)發(fā)布技術(shù),以管理信息流程為出發(fā)點(diǎn),將信息作為管控核心,綜合采用管理措施及安全技術(shù),可有效保證PHP動(dòng)態(tài)網(wǎng)站系統(tǒng)框架靈活擴(kuò)展[4]。
3.PHP技術(shù)動(dòng)態(tài)網(wǎng)站優(yōu)化設(shè)置
首先,針對(duì)全局變量問(wèn)題,在PHP以后的版本中,主要通過(guò)特殊定義數(shù)據(jù)組的設(shè)置,在全局范圍內(nèi)通過(guò)自動(dòng)全局變量id獲取,可有效降低惡意攻擊者利用URL直接數(shù)據(jù)輸入的風(fēng)險(xiǎn)。在這個(gè)基礎(chǔ)上,編程人員可將全部?jī)?nèi)部變量進(jìn)行初始化設(shè)置,保證全局變量問(wèn)題的有效解決。
其次,在文件上傳階段,編程人員可在確認(rèn)全部輸入字符串長(zhǎng)度及類(lèi)型的情況下,將全部數(shù)據(jù)符由SQL發(fā)送到數(shù)據(jù)庫(kù)服務(wù)器字符串終端。同時(shí)利用htmlentities函數(shù)對(duì)用戶(hù)輸入文件信息進(jìn)行進(jìn)一步驗(yàn)證,避免客戶(hù)端Web瀏覽錯(cuò)誤執(zhí)行問(wèn)題的發(fā)生。在這個(gè)基礎(chǔ)上,可設(shè)定Web服務(wù)器為僅允許傾向,避免非完整.html文件的出現(xiàn)。并將文本文件、配置文件等關(guān)鍵數(shù)據(jù)文件保存在Web文檔下方子目錄中,并在恰當(dāng)?shù)奈恢眠M(jìn)行文檔引入,結(jié)合文件存放位置、讀寫(xiě)權(quán)限的限制,可保證代碼文件的安全穩(wěn)定。
最后,為了避免SQL Injection對(duì)PHP動(dòng)態(tài)網(wǎng)站運(yùn)行的不利影響,編程人員可禁止超級(jí)用戶(hù)身份運(yùn)行數(shù)據(jù)庫(kù)服務(wù)器,并在數(shù)據(jù)庫(kù)軟件設(shè)置完畢后,對(duì)數(shù)據(jù)庫(kù)目錄、文件權(quán)限、文件屬性進(jìn)行逐一修改。同時(shí)利用md5()函數(shù)哈希算法加密密碼進(jìn)行基本身份認(rèn)證設(shè)置。為了進(jìn)一步保證PHP后臺(tái)管理的安全性,可在后臺(tái)添加管理員賬號(hào)信息的基礎(chǔ)上,將管理員IP地址錄入數(shù)據(jù)庫(kù)終端。此外,若多次登錄不成功,則可鎖定用戶(hù)賬務(wù)或者封閉用戶(hù)IP,保證用戶(hù)信息安全。
綜上所述,雖然PHP語(yǔ)言在開(kāi)發(fā)環(huán)境、開(kāi)發(fā)語(yǔ)言及工具、數(shù)據(jù)庫(kù)連接等方面均優(yōu)于A(yíng)SP.NET及JSP語(yǔ)言,但是由于PHP缺乏規(guī)模性、多層結(jié)構(gòu)支持,也對(duì)PHP動(dòng)態(tài)網(wǎng)站安全運(yùn)行造成了一定的威脅。因此,在實(shí)際應(yīng)用過(guò)程中,相關(guān)技術(shù)人員應(yīng)對(duì)PHP語(yǔ)言進(jìn)行進(jìn)一步優(yōu)化,從用戶(hù)權(quán)限設(shè)置、文件訪(fǎng)問(wèn)加密、全局內(nèi)部變量初始化等方面彌補(bǔ)PHP開(kāi)發(fā)缺陷,為PHP應(yīng)用范圍的進(jìn)一步擴(kuò)展提供依據(jù)。
參考文獻(xiàn)
[1]葉鋒. PHP在動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)中的優(yōu)勢(shì)[J]. 信息與電腦:理論版, 2016(14):57-57.
[2]王象剛. 淺析PHP在動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)中的優(yōu)勢(shì)[J]. 計(jì)算機(jī)光盤(pán)軟件與應(yīng)用, 2013(23):103-103.
[3]徐春綿. PHP在動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)中的應(yīng)用研究[J]. 通訊世界, 2015(17):261-261.
作者簡(jiǎn)介:梁鵬杰(1980.8-),男,廣東肇慶,漢族,本科,學(xué)士學(xué)位,中級(jí),主要研究方向:計(jì)算機(jī)應(yīng)用技術(shù)與裝配調(diào)試。