iT邦幫忙

0

asp.net Server.Transfer

請問我web1按下button帶出值
string p2001 = "p2001=" + Server.HtmlEncode(TextBox2.Text); //手機
string p2004 = "p2004=" + Server.HtmlEncode(TextBox1.Text); //代號
string p2005 = "p2005=" + Server.HtmlEncode(TextBox3.Text); //姓氏
string p2006 = "p2006=" + Server.HtmlEncode(Label56.Text); //密碼

s1 = p2001 + "&" + p2004 + "&" + p2005 + "&" + p2006;
Server.Transfer("~/web2.aspx?" + s1);
Response.Write(" parent.window.opener=null;parent.window.close(); ");
//===================================================================//
到web2.aspx網頁會出現如下,只是值都被看到,要如何隱藏 ?或是有其它方法寫出來?
https://web2.aspx?p2001=1111111111&p2004=11111111&p2005=1&p2006=1111

請大大分享一下,是否有其它傳值的方法,小弟初才,會得都是網上大大學的,再次感謝

ps:網頁上有大大是說Server.Transfer是加密型,是我用錯嗎?才會讓值顯示出來

丹尼爾 iT邦研究生 2 級 ‧ 2018-06-29 16:51:10 檢舉
透過URL傳值的話,就將資料加密後再送出去吧!
縱使被看到了也無妨..
openbmw iT邦新手 5 級 ‧ 2018-06-29 17:01:47 檢舉
可是我的不是有加密了嗎?如果不沒有,要用什麼參數加密?
Server.Transfer機制只是隱藏傳值過程,通常會使用到cookie或Session來存放值,並非加密,而是強化""隱密性""。其實URL傳值已經做過編碼(非加密),如果你想加密必須用加解密函數(DES或AES之類)加密字串後加到URL,這徒增很多運算資源(感覺比利用JSON傳值還麻煩)。。。。
如果公司內部使用,可以無需考慮這麼嚴僅,只要流程對,用其他技術補救(用https之類或IP控管)。對外的網站就要考慮更多。。。不過,你看google一樣也看得到URL傳值(只是google帳號管制很嚴)。。。。

2 個回答

0
tomchristopher
iT邦新手 5 級 ‧ 2018-06-29 16:19:37

ASP.NET常用就這三項
Response.Redirect、Server.Transfer、Server.Execute
你可以試試!有些參數自己試試!

還有另一項server端作法:Session,不過要做好空值的檢查。(會增加server記憶體空間,I/O需求大者不建議)

0
YoChen
iT邦新手 1 級 ‧ 2018-06-29 17:56:00

你用Server.Transfer應該不會在網址列看到web2.aspx
這個方法用來保護QueryString是可行的,不過前提是網頁要在同個Server底下

我要發表回答

立即登入回答