作者iverson2007 (魏炎)
看板Ajax
標題[問題] HTTP POST到 HTTPS 的安全做法
時間Tue Oct 29 10:02:25 2013
想請問一下,如果在http的頁面下有個Login form要post到https的話,有沒有比較安全
的方法呢?估狗後發現雖然是同一個Domain name但http跟https還是算不同往域,因此沒
辦法傳遞資料,如果用JSONP是有辦法做跨域取得資料,但getJson()似乎只能用GET來實
做...然而這又是Login form用GET似乎不妥..不知道各位前輩有沒有碰過類似的問題呢?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 182.235.81.30
1F:推 mrbigmouth:jQuery直接用ajax啊 type用post dataType用jsonp 10/29 10:47
2F:→ mrbigmouth:雖然post比get安全這點其實只是錯覺 10/29 10:47
3F:→ iverson2007:是啊..但至少post不會留下browser history吧.. 10/29 11:51
4F:→ iverson2007:晚點再來試試看大大說的方法 謝謝! 10/29 11:51
5F:→ iverson2007:剛剛查過了jsonp好像只能用GET 10/29 11:53
6F:推 mrbigmouth:呃 對 我錯了XD 10/29 11:54
7F:→ mrbigmouth:剛頭昏 其實jsonp就是放個script tag...那就只能get 10/29 11:54
8F:→ mrbigmouth:話說 哪家的瀏覽器會把你的ajax url也放history啊? 10/29 11:55
9F:→ iverson2007:也是..是ajax 但這樣做不會有安全性問題嗎? 10/29 11:57
10F:推 mrbigmouth:都ssl了 如果還有安全性問題 也不會是你弄成post就能 10/29 11:57
11F:→ mrbigmouth:解決掉的.... 10/29 11:57
12F:→ iverson2007:了解...所以就這樣的解法是可行的囉@@? 10/29 11:58
13F:→ chrisQQ:這樣有做跟沒做一樣吧 XD 重點就是 http 這段送出一樣沒過 10/29 11:59
14F:→ chrisQQ:ssl 加密啊... 10/29 11:59
15F:推 mrbigmouth:樓上一語驚醒夢中人...你到底要ssl傳遞什麼資訊啊? 10/29 12:04
16F:→ mrbigmouth:包含帳號密碼....!? 10/29 12:04
17F:→ mrbigmouth:那有個比較麻煩的做法....做一個iframe(同網域) 10/29 12:04
18F:→ mrbigmouth:裡面放form action設https,原頁面登入後控制該form 10/29 12:05
19F:→ mrbigmouth:去做填帳號密碼跟送出的動作 10/29 12:05
20F:→ iverson2007:嗯 就Login Form填完帳密後到AJAX作驗證動作 10/29 12:10
21F:→ iverson2007:我也有查到iframe的做法 看來只能用iframe解了 10/29 12:11
22F:→ iverson2007:但缺點就是我的login popup 沒辦法及時傳回驗證狀態了 10/29 12:14
23F:推 mrbigmouth:popup? 你都popup了為什麼還要用iframe啊? 10/29 12:37
24F:→ mrbigmouth:應該說...都popup了,就不必ajax直接form submit了吧? 10/29 12:37
25F:推 mrbigmouth:而且不管是popup還是iframe都有辦法即時回傳驗證狀態 10/29 12:39
26F:→ mrbigmouth:在驗證完畢後 導向至能操縱opener/parent的頁面 10/29 12:40
27F:→ mrbigmouth:再從該導向網頁以script對opener/parent進行操作即可 10/29 12:40
28F:→ iverson2007:但popup在http的頁面下而檢查的Ajax url 在https 10/29 13:09
29F:→ danny8376:ajax的那端加個Crossdomain的header吧 10/29 14:10
30F:推 mrbigmouth:Crossdomain header的作法不是全瀏覽器通吃喔 10/29 15:24
31F:→ mrbigmouth:而且在IE client需要用別的ajax request方法才可以過 10/29 15:24
32F:→ danny8376:超想無視IE6~9 XD 最好的方法還是全網頁https啦XD 10/29 16:53
33F:→ danny8376:話說 就算iframe也會有http != https的問題吧? 10/29 17:05
34F:推 mrbigmouth:原iframe(http) iframe裡的form post到(https) 10/29 17:12
35F:→ mrbigmouth:sever驗證出結果後 把網頁導到http 10/29 17:12
36F:推 mrbigmouth:然後該http頁面根據結果使用javascript把結果傳parent 10/29 17:14
37F:→ mrbigmouth:使用popup頁框的話也是完全相同的流程 10/29 17:15
38F:→ mrbigmouth:現在的問題是原po明明已經用了popup不知為啥還在popup 10/29 17:15
39F:→ mrbigmouth:做ajax...而不是直接在popup裡放form post到https 10/29 17:15
40F:→ danny8376:對齁XD 是說HTTPS的GET也沒不安全啊 server的log記得 10/29 17:16
41F:→ danny8376:過濾掉就是XDD 10/29 17:17
42F:→ danny8376:這是好問題XD popup就能直接form去POST了 OwO 10/29 17:18
43F:→ danny8376:不過有可能popup本身是有額外功能的頁面? 10/29 17:19
44F:→ danny8376:所以popup本身不能跳開? 10/29 17:19
45F:→ iverson2007:當初是想說如果有錯誤訊息的話直接回傳回popup上 10/29 21:14
46F:→ iverson2007:所以才做了AJAX去驗證是否是可登入的使用者,跟據AJAX 10/29 21:15
47F:→ iverson2007:傳回來的數據再判斷如果可登入就導向登入頁面,否則 10/29 21:15
48F:→ iverson2007:在popup秀出錯誤訊息,但是這樣的做法就是資料有進 10/29 21:16
49F:→ iverson2007:AJAX URL作驗證 但是訊息沒回傳 所以即便成功了也毫無 10/29 21:17
50F:→ iverson2007:反應,只有當POPUP也在https下才能成功,只要POPUP在 10/29 21:18
51F:→ iverson2007:Https下毫無反應..偏偏網頁有些頁面是http有些https.. 10/29 21:18
52F:→ iverson2007:有試過直接在popup 用POST到https..但一樣只有驗證成 10/29 21:27
53F:→ iverson2007:功的狀態下是正常,驗證失敗我自己寫的錯誤訊息也是無 10/29 21:27
54F:→ iverson2007:法顯示就是了... 10/29 21:27
55F:推 Fonger:YQL 10/30 17:54
56F:→ iverson2007:感謝各位,最後還是選擇直接POST到HTTPS的做法了 11/10 11:02
57F:噓 joey770911:網路沒有絕對安全 11/21 12:33