2012年3月9日

[Freetalk] 漫談程式設計-II

前篇,本篇就再來舉個例子談談錯誤訊息處理吧

I. 錯誤訊息處理

校方希望全體師生都可以吃青菜,故舉辦了拍附近餐廳的青菜內容上傳的活動
pgs_04 
坎尼也很開心的點開網頁,看看大家的分享內容
但身為一個系統開發人員,注意網址列也是很正常的一件事
asaprogrammer

嗯,如第一張圖所示,是用 Query String 的方式傳送頁面資訊 
很常見的作法,可以節省運算成本,也能有效地達到目的
但好像沒有資料也會顯示該頁,所以坎尼就稍微改了一下參數
pgs_05 在按下Enter鍵的同時坎尼OS「啊啊啊,會不會壞掉?」

pgs_06 嗯…壞掉了 >/////<
但壞掉不要緊,這頁的問題是在它把錯誤訊息給吐出來了

「知道錯誤訊息不好嗎?」
給開發人員知道當然很好,可以馬上了解問題並進行解決

但是!!!

給使用者看到訊息的用意是? 難不成要使用者幫你 Debug 嗎?
還是說這是挑戰,看能不能釣到惡意攻擊的人?

這邊應該要做的是判斷頁數的大小,不合理的數字就該擋掉

II. 同場加映

坎尼想說這個網站會不會還有其他問題,所以就開始隨意瀏覽
除了點連結之外還有改網址…

!!! (出現 FF 中遇敵的音效)
pgs_07 
很明顯的,此站看來是舉辦了大家幫忙一起除錯的全民除錯活動
所以坎尼很好心的連過去 online_resource.php 看有沒有什麼可以幫上忙的

「咦? 奇怪,為什麼顯示 404 page not found? 」
「原來是有做直接存取的限制啊,坎尼放心了不少」
「………」(眉頭一皺,發現事情並不單純)
「不對,是 resource 拼成 resouce 了!!!!」

唉…就算程式沒寫好,英文也要練好啊…

by the way, 如果是系統不能控制的情況,請用 try…catch… 處理
像是 DB Server 當掉,使用者罵的是你而不是管 DB 的人員
(當然如果兩個都是同一個人管的…那…只能說很心酸)

III. 小結

錯誤訊息 (Error Log) 記錄請用 Log 工具
會在頁面上顯示是開發中為了方便做的事,不代表可以在上線之後做

另外最好設計錯誤訊息的顯示格式,到底是 Warning 還是 Fatal
至少要處理的時候可以排出優先順序
Will 保哥在 網站建置不是件簡單的事 @ 打造網站的步驟 的回應也談到
”錯誤訊息在網站企畫階段就要設計。”

至於把訊息曝露給使用者可能會有什麼狀況呢?
可以參考一下同樣是保哥寫的 機會教育:從中華民國總統府網站被發現 XSS 漏洞講起

沒有留言:

Google Spreadsheet 裡用規則運算式

最近因為工作關係,遇到要用 Google Form 及 Google Sheet 所以研究了 Google Sheet 裡的一些 function 怎麼用 首先,分享一下如何在 Google Sheet 裡用規則運算 :D