iT邦幫忙

7

ASP.Net TextBox Mode=password加上postback....

在ASP.Net來說,Password預設的情況下,在postback之後,會自我毀滅...炸死你
也就是清除文字方塊裡頭的資料(使用Ajax的情況另論)
但是咧...有時候PG很喜歡搞些有的沒有的創意....例如...按個按鈕,顯示個什麼日曆(這裡不討論ajax toolkit或jQuery,或者UpdatePanel之類的...用JS當靠山的技術)
問題是...最好所有的control都不要有事件...一旦postback...事情來啦...
在ASP.Net來說,Password預設的情況下,在postback之後,會自我毀滅...炸死你
也就是清除文字方塊裡頭的資料(使用Ajax的情況另論)
但是咧...有時候PG很喜歡搞些有的沒有的創意....例如...按個按鈕,顯示個什麼日曆(這裡不討論ajax toolkit或jQuery,或者UpdatePanel之類的...用JS當靠山的技術)
問題是...最好所有的control都不要有事件...一旦postback...事情來啦...
依照TextBox Mode=Password的設計模式...
密碼會被清除(我想...大概是基於什麼莫名的安全性理由之類的...)
這時...使用者就很困擾啦!尤其是當使用者在輸入『註冊』資料,偏偏裡頭又包含了一堆會postback的事件、驗證什麼來著....
怎麼辦?
這麼做吧...把密碼還給user....以下的程式碼,以C#呈現

protected void Page_Load(object sender, EventArgs e)
{
  if(IsPostBack)
  {
    TextBox _textbox = this.密碼物件;
    _textbox.Attributes.Add("value",_textbox.Text);
  }
}

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
老鷹(eagle)
iT邦高手 1 級 ‧ 2013-10-09 09:33:08

不懂純推沙發

看更多先前的回應...收起先前的回應...
外獅佬 iT邦大師 1 級 ‧ 2013-10-09 09:37:34 檢舉

喂!喂!喂!...
PHP沒這問題嗎?
我記得...HTML password都有這個問題...落寞

wiselou提到:
Password預設的情況下

預設時先經過加密 有更改在解密存入資料庫
這樣可以嗎??臉紅

外獅佬 iT邦大師 1 級 ‧ 2013-10-09 11:51:15 檢舉

重點不是這個...Orz

會錯意了Orz

0
temo
iT邦新手 1 級 ‧ 2013-10-09 12:26:33

這樣資料不會在網頁庫存裡保留資料?
很多網頁都會這樣,只要輸入錯誤postback資料就會要求重打

為了安全,主要還是怕使用者亂搞汗

外獅佬 iT邦大師 1 級 ‧ 2013-10-09 12:30:51 檢舉

所以...在postback裡頭...就要自己去做功課了吧...

temo iT邦新手 1 級 ‧ 2013-10-09 20:14:25 檢舉

謝謝

0
海綿寶寶
iT邦大神 1 級 ‧ 2013-10-09 13:12:47

不懂純推

0
魯大
iT邦高手 1 級 ‧ 2013-10-09 15:50:05

直接將USER洗腦不就成了
要不,一直PostBack,就要一直處理很多的狀況
煩死了,直接洗腦比較快啦.. 抗議

外獅佬 iT邦大師 1 級 ‧ 2013-10-12 01:42:30 檢舉

把老闆洗腦...把那些意見一堆的同事給換掉....毆飛

魯大 iT邦高手 1 級 ‧ 2013-10-14 14:22:42 檢舉

把老闆洗腦...

老闆換我做,換老闆去工作... XD

0
wiseguy
iT邦超人 1 級 ‧ 2013-10-09 17:21:41

現在看到大部份的網站,都把密碼分離到另一個頁面去做。醬就不用煩惱目前頁面一直在重刷了。
或者把密碼欄擺為最後一個 control 也行吧?

外獅佬 iT邦大師 1 級 ‧ 2013-10-12 01:41:36 檢舉

擺在最後一個control??
這樣....沒試過...筆記
有空試試...拍手

0
funforever
iT邦新手 4 級 ‧ 2013-10-12 12:33:37

(先向版主說聲抱歉...我的接收大約只有40%...訊號不太好....以下有誤或偏離主題的話..請多包涵)

依聖殿祭司asp.net3.5所著作的書上有提到一個非常不錯的建議

wiselou您所提出的註冊頁面...
在Client端可以運用javascript作Client端驗證,
然後資料到Server端在做Server端驗證
雙驗證...
Client端驗證....降低使用者輸入錯誤,減少PostBack造成Server連線次數
Server端驗證....可以防Client端以非制定化輸入攻擊Server的攻擊手法(簡稱:黑箱測試...嗯...黑箱攻擊好了...)

另外,建議使用者自己輸入的password不要postback給使用者,降低session hijacking的攻擊可能

還有有看到密碼由使用者輸入後,用程式進行加密後存入資料庫
杜防有心人士直接開啟資料庫看到明碼密碼

提供一個方案屬單向加密(如:MD5或HASH)
1.註冊時
user key passwd to encode get keybyencode save to db
2.登入時
user key passwd to encode get keybyencode

then select keybyencode from db

比較keybyencode是否一致

以上~純分享~不足之處請見諒筆記

外獅佬 iT邦大師 1 級 ‧ 2013-10-20 02:06:42 檢舉

我的前提就說了...不考慮那些個js的驗證....
要考慮這個,何須如此費工?

外獅佬 iT邦大師 1 級 ‧ 2013-10-20 02:08:09 檢舉

看過一些系統
連server control都省了
直接泛型處理常式+HTML+JS就做完了
連server control都沒用到開心

外獅佬 iT邦大師 1 級 ‧ 2013-10-20 02:13:36 檢舉

funforever提到:
提供一個方案屬單向加密(如:MD5或HASH)
1.註冊時
user key passwd to encode get keybyencode save to db
2.登入時
user key passwd to encode get keybyencode

then sel...(恕刪)

這個討論串...基本上根本就不是在討論密碼如何又如何加密、處理
它很簡單...就是post back之後,如何保存原有密碼欄位的資料...
如果您post back之後,就已經做完驗證、存檔...請您...還是忘了這一篇吧
這一篇的重點,在於,不用『額外』的js協助,單純使用asp.net,在啟用某些server control的autopostback之後,仍能維持原有password欄位資料,而不需要重新輸入的方法而已

例如...id欄位,做autopostback...

我要留言

立即登入留言