※ 本文為 ott 轉寄自 ptt.cc 更新時間: 2014-02-15 04:34:23
看板 Ajax
作者 iverson2007 (魏炎)
標題 [問題] 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
mrbigmouth:jQuery直接用ajax啊  type用post  dataType用jsonp1F 10/29 10:47
mrbigmouth:雖然post比get安全這點其實只是錯覺
iverson2007:是啊..但至少post不會留下browser history吧..3F 10/29 11:51
iverson2007:晚點再來試試看大大說的方法 謝謝!
iverson2007:剛剛查過了jsonp好像只能用GET
mrbigmouth:呃  對  我錯了XD6F 10/29 11:54
mrbigmouth:剛頭昏  其實jsonp就是放個script tag...那就只能get
mrbigmouth:話說  哪家的瀏覽器會把你的ajax url也放history啊?
iverson2007:也是..是ajax 但這樣做不會有安全性問題嗎?9F 10/29 11:57
mrbigmouth:都ssl了  如果還有安全性問題  也不會是你弄成post就能10F 10/29 11:57
mrbigmouth:解決掉的....
iverson2007:了解...所以就這樣的解法是可行的囉@@?12F 10/29 11:58
chrisQQ:這樣有做跟沒做一樣吧 XD 重點就是 http 這段送出一樣沒過13F 10/29 11:59
chrisQQ:ssl 加密啊...
mrbigmouth:樓上一語驚醒夢中人...你到底要ssl傳遞什麼資訊啊?15F 10/29 12:04
mrbigmouth:包含帳號密碼....!?
mrbigmouth:那有個比較麻煩的做法....做一個iframe(同網域)
mrbigmouth:裡面放form action設https,原頁面登入後控制該form
mrbigmouth:去做填帳號密碼跟送出的動作
iverson2007:嗯 就Login Form填完帳密後到AJAX作驗證動作20F 10/29 12:10
iverson2007:我也有查到iframe的做法 看來只能用iframe解了
iverson2007:但缺點就是我的login popup 沒辦法及時傳回驗證狀態了
mrbigmouth:popup?  你都popup了為什麼還要用iframe啊?23F 10/29 12:37
mrbigmouth:應該說...都popup了,就不必ajax直接form submit了吧?
mrbigmouth:而且不管是popup還是iframe都有辦法即時回傳驗證狀態
mrbigmouth:在驗證完畢後 導向至能操縱opener/parent的頁面
mrbigmouth:再從該導向網頁以script對opener/parent進行操作即可
iverson2007:但popup在http的頁面下而檢查的Ajax url 在https28F 10/29 13:09
danny8376:ajax的那端加個Crossdomain的header吧29F 10/29 14:10
mrbigmouth:Crossdomain header的作法不是全瀏覽器通吃喔30F 10/29 15:24
mrbigmouth:而且在IE client需要用別的ajax request方法才可以過
danny8376:超想無視IE6~9 XD  最好的方法還是全網頁https啦XD32F 10/29 16:53
danny8376:話說 就算iframe也會有http != https的問題吧?
mrbigmouth:原iframe(http)  iframe裡的form post到(https)34F 10/29 17:12
mrbigmouth:sever驗證出結果後 把網頁導到http
mrbigmouth:然後該http頁面根據結果使用javascript把結果傳parent
mrbigmouth:使用popup頁框的話也是完全相同的流程
mrbigmouth:現在的問題是原po明明已經用了popup不知為啥還在popup
mrbigmouth:做ajax...而不是直接在popup裡放form post到https
danny8376:對齁XD 是說HTTPS的GET也沒不安全啊 server的log記得40F 10/29 17:16
danny8376:過濾掉就是XDD
danny8376:這是好問題XD popup就能直接form去POST了 OwO
danny8376:不過有可能popup本身是有額外功能的頁面?
danny8376:所以popup本身不能跳開?
iverson2007:當初是想說如果有錯誤訊息的話直接回傳回popup上45F 10/29 21:14
iverson2007:所以才做了AJAX去驗證是否是可登入的使用者,跟據AJAX
iverson2007:傳回來的數據再判斷如果可登入就導向登入頁面,否則
iverson2007:在popup秀出錯誤訊息,但是這樣的做法就是資料有進
iverson2007:AJAX URL作驗證 但是訊息沒回傳 所以即便成功了也毫無
iverson2007:反應,只有當POPUP也在https下才能成功,只要POPUP在
iverson2007:Https下毫無反應..偏偏網頁有些頁面是http有些https..
iverson2007:有試過直接在popup 用POST到https..但一樣只有驗證成
iverson2007:功的狀態下是正常,驗證失敗我自己寫的錯誤訊息也是無
iverson2007:法顯示就是了...
Fonger:YQL55F 10/30 17:54
iverson2007:感謝各位,最後還是選擇直接POST到HTTPS的做法了56F 11/10 11:02
joey770911:網路沒有絕對安全57F 11/21 12:33

--
※ 看板: ott 文章推薦值: 0 目前人氣: 0 累積人氣: 142 
guest
x)推文 r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇