第47章 完成后端代碼
花了三天的時間給倆小孩補齊了課,剩下的時間王向中都把它們花在了搜索引擎的構建上,每天就睡四五個小時,一刻都不敢停歇。
臨近假期結束,搜索頁面的簡易表單和區(qū)塊布置都已經(jīng)構建完畢,讀寫數(shù)據(jù)庫內(nèi)容的SQL語句也已經(jīng)寫得大差不差,只要通過,便可以走下一步流程了。
“胖子,你快過來看看。”王向中對正與李錦光聊的火熱的呂大海說道。
李錦光和呂大海不愧是一路貨色,兩個人無論是腦子里的思想和脾氣都恰巧這么對上了,皆是頗有種相見恨晚的感覺。
“中哥,發(fā)生什么了?”呂大海瞧見王向中喊自己,旋即也是屁顛屁顛地跑了過來。
“你看一下這個頁面,簡單做一個測試?!蓖跸蛑信牧伺膶Ψ降募?,微笑道。
軟件測試,是一種核查軟件是否正常工作的基本流程,其目的是為了檢查軟件實際功能與需求是否一致。
這個年代還沒有什么正規(guī)的軟件測試流程,大概就是請一個用戶隨便操作一下,看看有沒有bug(程序漏洞)之類的存在。
一般來講,軟件的開發(fā)者是不參與測試工作的,因為整體的操作邏輯是由開發(fā)者自己所設定,所以在操作的時候難免會有些思維固化,導致遺漏掉不少非常規(guī)步驟。
當然在未來世界也是有正規(guī)科學的測試流程,首先按照需求寫一套測試用例,接著根據(jù)用例所含流程寫一套測試腳本,使用自動化腳本覆蓋所有操作路徑,而這也被稱為白盒測試。
聽完了王向中的介紹,呂大海也是點了點頭,壞笑道:“那我就盡量折騰了哈!”
“隨便,只要不把電腦給砸了?!蓖跸蛑新冻鲆桓睙o所謂的模樣。因為呂大海不懂需求,但同時又會操作電腦,無疑就是最好的測試工具人。
只見呂大海手持鼠標點來點去,時而沉思,時而眉頭緊鎖,約莫過了十分鐘,才伸了一個懶腰。
“用得怎么樣?”王向中笑著問道。
“現(xiàn)在還看不出來,感覺上已經(jīng)沒什么問題了。”呂大海有些納悶,他還是有些不明白,為什么此刻的王向中懂得這么多,不僅年紀輕輕就出來做生意,竟然還可以獨立寫一個網(wǎng)站。
“我說中哥,你到底吃了什么靈丹妙藥?我實在是不明白,我們哥倆一樣的年紀,憑什么你就可以混得風生水起?”呂大海胖臉上滿是不解之色,就好像王向中的腦子格外好用似的。
王向中聽到這話也是愣了一下,才意識到自己的行為確實有些夸張了。
一個人要么早早出社會經(jīng)商,要么一頭扎進學校深耕技術和學術,十八歲的年紀就能全盤掌握這兩者,這確實太逆天了。
當然王向中不可能承認自己是個穿越者的事實,只能是尷尬著搪塞一番:“哎呀,我就是運氣好罷了,換做是你,你也可以?!?p> 呂大海倒也只是感嘆一句罷了,單純的他并沒有生出什么壞心思,于是也只是白了對方一眼,怒罵道:“小氣鬼,你肯定是吃了什么藥。”
王向中也沒有理會呂大海這番白癡言論,不過這一出倒是提醒了他,小心駛得萬年船,日后做事一定要盡量低調(diào)一些。
呂大海絕非是唯一一個會提出質疑的人,也就是他沒什么心機,若是讓心機重的人逮到了,恐怕又會出什么幺蛾子。
一想到這,王向中也是搖了搖頭,迅速將思路扳回到搜索引擎這件事上。
現(xiàn)在既然已經(jīng)完成了前后端邏輯上的工作,接下來就是著手代碼安全方面的工作了。
不像未來的各種后端框架中自帶各種安全措施,現(xiàn)在依靠原生ASP寫的網(wǎng)站必須要自己去寫邏輯,實現(xiàn)安全防護功能。
安全防護功能主要針對兩塊內(nèi)容,第一是表單SQL注入漏洞補丁,第二是CC攻擊屏蔽措施。
所謂SQL注入,就是利用反斜杠號“\”和引號,改寫原有SQL語句的作用。
打個比方,像這種搜索引擎的輸入文本框,一般使用“Select”語句(查詢關鍵詞),按照內(nèi)容鍵值匹配索引相對的數(shù)據(jù)。
文本框的內(nèi)容在后端往往被視為一個參數(shù),由于參數(shù)類型是String(字符串類型),因此往往在該參數(shù)開頭和結尾還有雙引號的存在。
而參數(shù)內(nèi)部一旦帶有雙引號,則會對整個語句的執(zhí)行出現(xiàn)偏差。比如攻擊者可以巧妙地便寫一串含有“Insert”語句(插入數(shù)值關鍵詞)或者是指向其它的數(shù)據(jù)表,看似堅固邏輯緊密的服務就會被瞬間瓦解。
寫程序的人往往都知道一句話:“永遠不要相信用戶的輸入。”因此,在編寫代碼的過程中,務必要給參數(shù)字符進行限制、過濾、轉義等操作,才能保障數(shù)據(jù)層面的安全性。
而CC攻擊比較好理解,它一般針對于網(wǎng)站,通過構造大量虛擬訪問或是針對接口的頻繁參數(shù)傳遞,使得中間件消耗大量的系統(tǒng)資源,直至其超出性能承受范圍而崩潰。
未來的中間件例如nginx或apache都自帶防CC攻擊的安全模塊,而現(xiàn)在王向中所用的IIS3.0顯然是沒有這種東西的。
因此只能在代碼層面上稍稍限定一番。例如限定同IP每分鐘所能調(diào)用接口的次數(shù),然后在服務器后臺里寫一個監(jiān)控腳本,每分鐘檢測中間件和數(shù)據(jù)庫的運行情況,一旦發(fā)現(xiàn)進程異常,則立刻重啟。
當然最好的辦法就是前后端分離,數(shù)據(jù)和中間件分離,使用CDN或者集群來規(guī)避集中訪問問題。
但現(xiàn)在第一是沒有技術,好多需要的技術都還在娘胎里;第二還是王向中太窮了!就現(xiàn)在賺到區(qū)區(qū)幾萬塊,別說是建一個集群,能不能買到一臺合適的服務器都還是問題。
一般來講,王向中還需要買三臺設備,第一是應用服務器,第二是三層交換機,第三是磁盤陣列。
應用服務器用于部署基本的環(huán)境和代碼,以及執(zhí)行語句的計算工作;而三層交換機則是兼并了路由器和普通交換機的職能,用于外網(wǎng)連通和內(nèi)網(wǎng)構建;至于磁盤陣列,在這個年代可能還買不到,只能自己手動改一臺普通服務器……
如果再不狠狠賺錢,恐怕就要來不及了!