說明
在ASP.NET中,常要防止使用者惡意使用我們精心撰寫的程式。
例如,在購物網站上,使用者在信用卡交易頁面上點擊「確定交易」,但因伺服器尚在和金流商進行交易中,網頁上的按鈕卻可連續點擊,造成重複交易,那之後就有得吵了。
所以,我們要用一些方法,來防止使用者重覆點擊已經點擊過的按鈕。
為了達成這個目的,我們首先要把Button的UseSubmitBehavior這個屬性設為「false」。
為什麼呢?
因為在ASP.NET中,Button控制項預設的HTML Type為「Submit」,而不是「Button」。藉由將UseSubmitBehavior此屬性設為「false」,我們可以在Submit之前,透過Javascript來將按鈕的狀態設為不可點擊,或是作一些其他的處理 (如利用DIV蓋過Button…等等)。
而我們在伺服器端也應加入檢查,檢查是否為重複交易(如利用MD5, SHA256來確認交易是否重複,或是檢查二次交易之時間)。
另外,我們也希望在使用者確定交易前,再透過Javascript來和他確認是否交易。
解決方法,請參考下面。
解決方法
1. 在Visual Studio的Design View中,將Button的UseSubmitBehavior此屬性設為「false」。
2. 在OnClientClick中加入如下程式碼
1: javascript: if (confirm('請問您確定此筆交易嗎?') == true) {this.disabled=true;} else {return;};
3. 在按鈕的Button_Click事件中,加入檢查設定 (如檢查此筆交易之交易碼等),並記得視情況將「Button.Enabled」設為false。
4. 完成。
結論
網頁程式需要注意的東西很多,不亞於Window Form程式,再加上各瀏覽器對語法之支援程度不同,更造成了撰寫上的困難度。尤其是電子商務,因牽涉範圍廣,又會扯到金流、物流,所以防呆、防惡意破壞的技術,我們一定要好好地掌握,才不會日後改不完。
沒有留言:
張貼留言