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