《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于μClinux下Boa的CGI技術實現
基于μClinux下Boa的CGI技術實現
摘要: μClinux是應用于微控制領域的一種嵌入式Linux操作系統,它源碼開放,移植性好,支持多種硬件平臺和幾乎所有常見網絡通信協議,支持文件系統豐富,是一個功能完整的嵌入式操作系統。并且有大量優秀的開放源代碼的應用軟件和開發工具可用,因此,采用μClinux作為操作平臺,使用Web技術進行遠程在線監測系統的開發。
Abstract:
Key words :

  引 言

  隨著企業安全意識的增強以及現代化管理水平的提高,對設備的遠程監控在工業控制系統中得到了越來越廣泛的應用。近年來,Web技術廣泛普及,把Web技術應用在這種監控系統中,可以讓操作者通過瀏覽器維護和管理監測點,查看監測數據。同時,監測中心的服務程序也可以很方便地通過Web把監測數據取回來,進行進一步的處理,十分方便。

  μClinux是應用于微控制領域的一種嵌入式Linux操作系統,它源碼開放,移植性好,支持多種硬件平臺和幾乎所有常見網絡通信協議,支持文件系統豐富,是一個功能完整的嵌入式操作系統。并且有大量優秀的開放源代碼的應用軟件和開發工具可用,因此,采用μClinux作為操作平臺,使用Web技術進行遠程在線監測系統的開發。

  1 嵌入式Web服務器

  為了能夠通過Web來維護和管理遠程在線監控系統,必須選擇一個恰當的Web服務器,不但要求所選擇的Web服務器支持動態Web技術,也要求它能夠在嵌入式系統中穩定地工作。

  1.1 Web服務器原理和功能

  嵌入式Web服務器以TCP/IP協議棧為基礎構建,需要實現HTTP,TCP和UDP等協議。任何一個客戶機,都可以通過HTTP協議與嵌入式Web Server建立連接。嵌入式Web服務器在Web瀏覽器和設備之間提供了統一的GUI接口,使得客戶端可以像在本地一樣透明地監控管理設備狀況。

  嵌入式Web服務器的主要功能有:響應多個客戶的實時HTTP請求,并為每個客戶建立連接,這是嵌入式Web服務器的首要功能;對設備的實時監控管理,參數的在線查看與配置等;對設備訪問的安全控制機制,包括SSL、用戶口令等;實現設備的故障智能報警。

  1.2 Boa的特點

  在μClinux中常用的Web服務器有:Boa,thttpd,httpd,其中httpd只支持靜態頁面,顯然不適合高級應用,thttpd和Boa所提供的功能基本一樣,但是thttpd在運行過程中所需要的資源要遠大于Boa,因此使用Boa作為該嵌入式系統的Web服務器。系統的軟件開發模型選用B/S模型。

  Boa是一個高性能的單任務型Web服務器,可以運行在幾乎所有的類Unix的平臺上,Boa支持認證,支持CGI,功能比較全,占用資源也少,非常適合于用在資源有限的嵌入式系統中,目前Boa已經以源碼的形式包含在μClinux的發行包中。

  2 Boa源碼分析

  在此通過以下對Boa的源代碼進行簡單的分析,來提出解決避免惡意攻擊的安全解決方案。

  2.1 Boa工作流程

  圖1是Boa工作流程圖。Boa從新到達的套接字獲得HTTP請求(由一個request結構來存儲),并將其保存在隊列當中。首先,get_request()將從套接字獲得的數據全部保存在request→header_line中,然后調用process_request()來處理在隊列中的每一個請求。根據request結構中status所表示的不同狀態,將進行不同的處理。如果這個請求符合HTTP協議,則會調用process_option_Iine()將一些頭部信息填寫到request結構中完成這些環境變量的設置,隨后process_header_end()會對用戶進行驗證。如果驗證通過則判斷request結構中的is_cgi,非0則是CGI程序,調用init_cgi()函數進行處理,為0則是靜態頁面,調用init_get()函數進行處理。

Boa工作流程圖

  2.2 init_get函數工作流程

  圖2為處理靜態頁面請求的init_get()函數的基本工作流程。圖2中process_get()函數完成的功能為將request結構中的data_men字符串返回套接字并在用戶瀏覽器上顯示相應的內容。

處理靜態頁面請求的init

  2.3 init_cgi函數工作流程

  對CGI程序的處理函數init_cgi()首先調用一系列函數完成對CGI環境變量的設置,create_common_env(),complete_env()完成了大多數CGI環境變量的注冊工作。采用PIPE(管道)方式,就是將CGI程序的輸出重定向到管道,然后Boa從管道讀取并轉發給客戶端瀏覽器。整個流程結束后,返回到主函數的無限循環中等待處理下一個套接字連接的到達。init_cgi()具體工作流程如圖3所示。

init

  管道讀取函數read_from_pipe()完成的主要功能是從套接字req→data_fd讀取數據到req→header_end中,并進行處理;然后修改req→status=PIPE_WRITE來調用write_from_pipe()將req→header_line的內容返回套接字fd,并在用戶瀏覽器上顯示相應的內容。

  3 Boa源碼改進

  經過上述對Boa源碼的分析可以看出,Boa服務器將根據瀏覽器地址欄中輸入的文件路徑調用相應的CGI程序或靜態頁面顯示在瀏覽器中。這種方式使入侵者很容易找到源文件,隱蔽性和安全性極差。這里在對Boa源碼進行修改后,在瀏覽器中輸入對該系統指定的靜態網頁類型的請求后,Boa服務器會自動進行文件路徑重定向,調用相應的CGI程序進行處理,而用戶不會察覺到這一變化。從而使用戶無法得知源文件的路徑,增加了程序的隱蔽性和安全性。

 

  在源代碼判斷是否CGI程序之前添加判斷:如果文件路徑(req→pathname)的后綴代表本系統指定的靜態頁面,則將其修改為實際CGI程序所在路徑,并更改is_cgi變量為“CGI”。經過這樣修改后,程序會調用CGI程序的處理函數init_cgi(),使原本的靜態請求變成動態的CGI請求。修改后的Boa流程如圖4所示(虛線為添加部分)。

修改后的Boa流程

  4 CGI程序設計技術

  4.1 CGI簡介

  到目前為止,實現動態Web頁面有4種技術可供選擇:CGI,ASP,PHP和JSP。因為目前μClinux還不支持ASP,PHP等動態Web頁面技術,因此在該實現中選擇了CGI。

  CGI規定Web服務器調用其他可執行程序的接口協議標準,提供Web服務器一個執行外部程序的通道。這種服務端技術使得瀏覽器和服務器之間具有交互性。CGI程序屬于一個外部程序,需要編譯成可執行文件,以便在服務端運行。Web服務器通過調用CGI程序實現與Web瀏覽器的交互,也就是CGI程序接收Web瀏覽器發送給Web服務器的信息,進行處理,將響應結果再回送給Web服務器及Web瀏覽器。

  4.2 CGI程序工作原理

  CGI工作原理如下:客戶端的用戶通過瀏覽器完成一定輸入工作后,向服務器發出。HTTP請求(稱為CGI請求),服務器守護進程,接收到該請求后,就創建一個子進程(稱為CGI進程)。該CGI子進程將CGI請求的有關數據設置成環境變量,在CGI程序與服務器間建立兩臺數據通道,然后啟動URL指定的CGI程序。子進程通過標準輸出流將處理結果傳遞給服務器守護進程,守護進程再將處理結果作為應答消息回送到客戶端。一個CGI程序的任務分為輸入任務和輸出任務。輸入任務根據請求方法的不同,從環境變量QUE-RY_STRING或標準輸入中讀取用戶輸入數據。輸出任務生成HTTP響應頭標內容,如消息正文的數據類型和數據長度等;生成HTTP響應消息正文內容,如動態生成的HTML文件內容。

  4.3 CGI程序改進方法

  傳統的CGI程序編寫方法簡單地用printf()函數來產生HTML源代碼。在輸出的字符串中如果有雙引號,在其前面必須有一個后斜字符,這是因為整個HTML代碼串已經在雙引號內,所以HTML代碼串中的雙引號符必須用一個后斜字符來轉義。這樣的CGI程序代碼冗長,不利于閱讀,且容易出錯。這里所采用的方法是預先將需要顯示的網頁保存成文件,采用仿“ASP”的技術,將需要動態顯示的內容寫入符號“|%”與“|”之間。并設計配置文件,指定替換內容。CGI程序逐行讀取源文件,將符號“|%”與“|”之間的內容替換成配置文件指定的內容。

  HTML源文件的格式設計如下:

  單選按鈕:

程序

  CGI程序找出“|%”與“|”之間的關鍵字key,如果key中不包含“@”則直接替換與之對應的值;如果包含“@”,將關鍵字分為三部分:replacestr=checked,key=system_mode,keyvalue=route。尋找數據結構中與key相等的name[i],將對應的value[i]與keyval-ue比較,如果相等則替換為type的值。具體流程如圖5所示。

具體流程

  當在任意用戶端瀏覽器中輸入目標板的IP地址及對應的文件名后,就會顯示如圖6所示界面。其中在地址欄中輸入的路徑已經按照本文之前的方法被Boa服務器修改,實際路徑為:http://192.168.0.1/cgi-bin/qs2.cgi。因此用戶無法找到源文件,減小了被惡意用戶攻擊的可能性。圖5中選中單選框和添加文本框內容這些操作都是經過CGI程序替換顯示的配置文件中的內容。修改這些內容后點擊下一步程序會自動保存到配置文件中,下一次再進入頁面后就會顯示上一次保存的結果。

演示程序頁面

  5 結 語

  這里通過對Boa源代碼的分析,提供了較為完善的文件隱藏機制,該研究為Web服務器在嵌入式設備遠程監控應用中提出了一個更為安全的解決方案。此外,通過對傳統的CGI程序設計方法進行改進,可顯著減少CGI程序代碼量,使其便于修改升級。這種方法完全可以應用在其他嵌入式系統中,因此具有廣泛的應用意義。系統也有一些尚需改進的地方,如:文件路徑隱藏方式有些簡單;CGI程序配置文件沒有進行加密;這些都有待今后進一步研究。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲视频一区二区在线观看| 欧美精品videossex性护士| 久久影院午夜片一区| 欧美三区在线观看| 在线观看日韩www视频免费| 久久免费视频在线| 亚洲一区二区欧美日韩| 91久久精品国产91久久性色| 日韩网站在线观看| 男女激情久久| 免费在线播放第一区高清av| 久久久久久欧美| 久久人人爽人人爽爽久久| 亚洲精品美女久久7777777| 国产精品私人影院| 亚洲人成在线播放网站岛国| 欧美极品一区| 欧美精品在线极品| 国产日韩欧美综合精品| 国产九色精品成人porny| 老司机精品视频一区二区三区| 亚洲欧美国产精品专区久久| 亚洲精选一区二区| 欧美成人精精品一区二区频| 久久国产精品黑丝| 中文一区二区在线观看| 国产精品yjizz| 国产精品一区二区视频| 欧美一区二区三区免费视频| 亚洲青涩在线| 99在线|亚洲一区二区| 久久久精品免费视频| 国产一区二区三区av电影| 久久精品国产一区二区三| 亚洲欧洲美洲综合色网| 欧美一区二区黄| 一区二区三区偷拍| 亚洲精品久久嫩草网站秘色| 激情欧美国产欧美| 欧美一区二区网站| 国产精品久久久久久久久免费樱桃| 国产精品高潮呻吟| 9色精品在线| 亚洲黄色影片| 性欧美1819性猛交| 亚洲美女区一区| 亚洲欧洲另类| 小黄鸭精品密入口导航| 国产精品一区二区在线| 亚洲国产美女久久久久| 在线观看视频欧美| 国产精品一区二区久久精品| 一区二区三区在线观看国产| 欧美国产视频日韩| 久久久久久久网| 国产精品v亚洲精品v日韩精品| 亚洲丶国产丶欧美一区二区三区| 国产综合欧美| 伊人精品成人久久综合软件| 亚洲欧美日韩爽爽影院| 国产精品毛片va一区二区三区| 在线亚洲欧美视频| 国产精品亚洲综合天堂夜夜| 在线观看亚洲a| 亚洲激情国产精品| 久久夜色精品国产亚洲aⅴ| 国产午夜精品视频| 亚洲一区中文字幕在线观看| 亚洲第一在线视频| 欧美一区二区三区免费视频| 亚洲黄色影院| 欧美日韩成人精品| 欧美aaa级| 亚洲精品一二| 一区二区三区免费看| 伊甸园精品99久久久久久| 欧美成人一二三| 欧美日韩在线播放三区| 欧美久久精品午夜青青大伊人| 激情婷婷亚洲| 猫咪成人在线观看| 欧美日韩午夜在线| 欧美性猛交xxxx免费看久久久| 欧美激情在线观看| 亚洲国产精品v| 一区二区三区波多野结衣在线观看| 欧美三级午夜理伦三级中文幕| 亚洲精品一区在线观看| 国产一二精品视频| 免费欧美日韩| 国产欧美一区二区三区国产幕精品| 在线观看视频一区二区欧美日韩| 亚洲综合精品| 一区二区三区免费网站| 免费看精品久久片| 久久频这里精品99香蕉| 欧美一区视频| 久热综合在线亚洲精品| 亚洲欧美春色| 国产一区二区成人久久免费影院| 欧美aⅴ99久久黑人专区| 精品动漫av| 蜜桃av综合| 国产精品久久久久久久免费软件| 狠狠色综合播放一区二区| 久久夜色撩人精品| 夜夜嗨av一区二区三区中文字幕| 欧美日本一区二区高清播放视频| 亚洲欧洲视频| 国产精品mm| 欧美高清视频www夜色资源网| 亚洲国产欧美一区二区三区丁香婷| 在线不卡中文字幕播放| 亚洲人成绝费网站色www| 国内自拍视频一区二区三区| 欧美日韩激情网| 欧美交受高潮1| 在线观看国产日韩| 激情成人av在线| 欧美久久久久久久久久| 国产精品影音先锋| 欧美精品一区二区三区在线看午夜| 久久人人看视频| 欧美在线视屏| 欧美二区在线看| 99视频有精品| 国产精品国产三级欧美二区| 欧美激情2020午夜免费观看| 国产视频一区在线观看| 欧美在线观看一区二区| 欧美日韩国产成人精品| 欧美日韩高清在线| 久久日韩粉嫩一区二区三区| 国产精品美女黄网| 国产精品视频1区| 国产一区激情| 麻豆精品一区二区综合av| 亚洲经典自拍| 国产精品老牛| 亚洲性视频网址| 蜜臀久久久99精品久久久久久| 欧美不卡激情三级在线观看| 国产精品视频专区| 欧美中文在线观看| 性色av一区二区怡红| 亚洲欧美视频在线观看| 午夜国产一区| 午夜精品久久久久久久男人的天堂| 国产精品xxx在线观看www| 亚洲欧美综合网| 黄色影院成人| 亚洲欧美文学| 欧美激情偷拍| 欧美激情视频一区二区三区免费| 亚洲精品一区二区三区四区高清| 久久免费精品视频| 亚洲人成亚洲人成在线观看图片| 国产精品美女久久久免费| 韩国在线一区| 亚洲欧美日韩久久精品| 在线电影院国产精品| 欧美老女人xx| 国产精品久久亚洲7777| 亚洲视频一区在线观看| 久久精品日产第一区二区三区| 国产精品进线69影院| 欧美人在线观看| 久久精品亚洲一区| 伊人久久成人| 国产精品一区毛片| 一区二区高清视频| 久久精品人人做人人爽电影蜜月| 国产女人水真多18毛片18精品视频| 国产亚洲欧美中文| 最新精品在线| 欧美freesex8一10精品| 久久久国产成人精品| 亚洲电影自拍| 欧美精品999| 欧美久久久久| 久久伊人免费视频| 激情五月综合色婷婷一区二区| 欧美三级网页| 国模吧视频一区| 亚洲免费一级电影| 欧美日韩精品系列| 欧美日韩在线不卡| 国产精品一区视频网站| 亚洲精品久久久久久一区二区| 亚洲一区精品视频| 国产精品三级久久久久久电影| 亚洲肉体裸体xxxx137| 欧美性一二三区| 国产精品亚洲网站| 欧美一级黄色网| 亚洲国产精品成人综合| 日韩视频在线观看| 亚洲国内精品在线| 欧美一级视频精品观看| 在线成人黄色| 欧美日本一区二区高清播放视频| 欧美在线一级va免费观看| 亚洲另类视频| 久久高清福利视频| 国产精品综合不卡av| 国产精品久久99| 欧美成人r级一区二区三区| 欧美成人在线免费观看| 欧美久久久久久久久久| 国产精品免费一区豆花| 亚洲欧美日韩一区在线观看| 欧美视频中文在线看| 久久一区二区三区超碰国产精品| 能在线观看的日韩av| 欧美呦呦网站| 亚洲人成亚洲人成在线观看图片| 嫩草伊人久久精品少妇av杨幂| 欧美激情1区| 蜜臀久久99精品久久久久久9| 美国成人直播| 欧美色图麻豆| 亚洲国产精品久久91精品| 亚洲国产精品电影在线观看| 国产免费成人在线视频| 欧美视频观看一区| 国产婷婷色一区二区三区在线| 久久亚洲精品视频| 午夜精品美女久久久久av福利| 国产亚洲精品久久久久动| 欧美刺激性大交免费视频| 老司机精品导航| 国产精品一区二区三区成人| 欧美日韩成人综合| 午夜免费在线观看精品视频| 国产精品美女久久久久久免费| 女人香蕉久久**毛片精品| 精品白丝av| 欧美日韩中文精品| 国产日韩欧美在线一区| 国产精品久久久久91| 久久久久国产精品一区| 久久资源在线| 国产精品男女猛烈高潮激情| 久久久www成人免费无遮挡大片| 日韩视频在线免费| 韩国av一区| 亚洲国产影院| 亚洲欧美日韩精品在线| 一本久久a久久精品亚洲| 久久影音先锋| 国产一区二区三区在线免费观看| 欧美日韩国产色综合一二三四| 国产精品久久国产精麻豆99网站| 在线一区二区日韩| 99国产欧美久久久精品| 老司机成人在线视频| 欧美黑人多人双交| 国产伦理精品不卡| 国产亚洲精久久久久久| 国产在线拍揄自揄视频不卡99| 亚洲午夜成aⅴ人片| 欧美国产1区2区| 欧美日本亚洲视频| 国产精品国产三级国产专播品爱网| 亚洲欧美卡通另类91av| 亚洲欧美制服另类日韩| 国产欧美日韩一区二区三区在线观看| 激情综合中文娱乐网| 美女主播一区| 亚洲免费激情| 国产麻豆综合| 国产精品99免费看| 欧美午夜影院| 国产精品国产自产拍高清av| 国产一区二区三区日韩欧美| 在线精品亚洲一区二区| 国产欧美日韩专区发布| 国产精品久久久久久久9999| 欧美理论片在线观看| 国内精品视频在线观看| 国产日韩精品在线观看| 激情国产一区二区| 亚洲美女视频在线观看| 国产一区二区三区网站| 午夜视频久久久| 日韩天堂在线观看| 狠狠色综合色区| 性高湖久久久久久久久| 欧美成人一区二免费视频软件| 欧美激情精品久久久久久| 亚洲成人资源网| 久久影院午夜论| 国产日韩一区二区三区在线播放| 亚洲欧美日韩爽爽影院| 国产一区成人| 国产精品一区一区| 亚洲综合色丁香婷婷六月图片| 亚洲无人区一区| 亚洲欧美日韩精品久久久| 国产精品视频导航| 一本久道综合久久精品| 国产精品视频yy9099| 欧美精品九九99久久| 亚洲永久在线观看| 亚洲欧美日韩人成在线播放| 激情六月综合| 国产欧美视频一区二区三区| 欧美激情导航| 亚洲国产精品成人一区二区| 国产在线精品成人一区二区三区| 一本色道久久综合精品竹菊| 亚洲国产日韩欧美在线99| 久久日韩粉嫩一区二区三区| 一区二区高清在线| 欧美午夜欧美| 欧美成人午夜免费视在线看片| 尤妮丝一区二区裸体视频| 午夜在线一区| 欧美电影免费观看网站| 欧美另类变人与禽xxxxx| 久久久精品动漫| 欧美一区二区三区视频在线| 999在线观看精品免费不卡网站| 国产精品乱码一区二区三区| 免费毛片一区二区三区久久久| 禁断一区二区三区在线| 黄色成人在线免费| 国产三级欧美三级日产三级99|