2017-03-22 23 views
0

當我們關閉一個asp:使用button.Enabled = false按鈕,它只是避免用戶觸發禁用按鈕的點擊事件的最佳方法是什麼?

  • 添加類aspNetDisabled
  • 添加disabled='disabled'的控制,並
  • 去除的onclick功能__doPostBack('button', '');

但是,如果用戶通過控制檯手動鍵入代碼,他可以觸發事件。

什麼是最好的安全方法?我是否應該用
if (sender.Enabled) { do things }封裝我的所有事件?這似乎很容易忘記,有沒有更好的方法,或更安全的方式?

編輯:我不是禁用EventValidation,因爲你可以在這裏看到:prnt.sc/en7oeh
這可能是導致該請求是有效的? 我的按鈕位於UserControl內部。

編輯2:我只使用一個簡單的頁面(不masterpages和用戶控件)與殘疾人按鈕試過,我仍設法通過在控制檯輸入__doPostBack('button', '')調用button_Click方法。 EventValidation似乎根本不起作用。我也檢查了我的web.config文件,沒有什麼禁用EventValidation。

回答

0

我試着通過設置按鈕button.Enabled = false然後手動執行代碼來嘗試你的建議。 Aspnet立即拋出錯誤Invalid postback or callback argument,因爲它應該是。這可能意味着你關閉了EventValidation。那就是而不是你應該做的事情,這會讓你的網站更容易受到惡意的攻擊。

這表示您仍然可以通過檢查點擊方法中按鈕的狀態來禁用代碼。

protected void LinkButton1_Click(object sender, EventArgs e) 
{ 
    if (LinkButton1.Enabled == true) 
    { 
     //execute actual code only when the correct button is enabled 
    } 
} 
+0

我不以任何方式禁用EventValidation,我是,但是,從加載的用戶控件 – Lucas

+0

裏面的按鈕,確認其已啓用:http://prnt.sc/en7oeh這怎麼可能發生? – Lucas

相關問題