[問題] HTTP POST到 HTTPS 的安全做法

看板Ajax作者 (魏炎)時間10年前 (2013/10/29 10:02), 編輯推噓9(10146)
留言57則, 6人參與, 最新討論串1/1
想請問一下,如果在http的頁面下有個Login form要post到https的話,有沒有比較安全 的方法呢?估狗後發現雖然是同一個Domain name但http跟https還是算不同往域,因此沒 辦法傳遞資料,如果用JSONP是有辦法做跨域取得資料,但getJson()似乎只能用GET來實 做...然而這又是Login form用GET似乎不妥..不知道各位前輩有沒有碰過類似的問題呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 182.235.81.30

10/29 10:47, , 1F
jQuery直接用ajax啊 type用post dataType用jsonp
10/29 10:47, 1F

10/29 10:47, , 2F
雖然post比get安全這點其實只是錯覺
10/29 10:47, 2F

10/29 11:51, , 3F
是啊..但至少post不會留下browser history吧..
10/29 11:51, 3F

10/29 11:51, , 4F
晚點再來試試看大大說的方法 謝謝!
10/29 11:51, 4F

10/29 11:53, , 5F
剛剛查過了jsonp好像只能用GET
10/29 11:53, 5F

10/29 11:54, , 6F
呃 對 我錯了XD
10/29 11:54, 6F

10/29 11:54, , 7F
剛頭昏 其實jsonp就是放個script tag...那就只能get
10/29 11:54, 7F

10/29 11:55, , 8F
話說 哪家的瀏覽器會把你的ajax url也放history啊?
10/29 11:55, 8F

10/29 11:57, , 9F
也是..是ajax 但這樣做不會有安全性問題嗎?
10/29 11:57, 9F

10/29 11:57, , 10F
都ssl了 如果還有安全性問題 也不會是你弄成post就能
10/29 11:57, 10F

10/29 11:57, , 11F
解決掉的....
10/29 11:57, 11F

10/29 11:58, , 12F
了解...所以就這樣的解法是可行的囉@@?
10/29 11:58, 12F

10/29 11:59, , 13F
這樣有做跟沒做一樣吧 XD 重點就是 http 這段送出一樣沒過
10/29 11:59, 13F

10/29 11:59, , 14F
ssl 加密啊...
10/29 11:59, 14F

10/29 12:04, , 15F
樓上一語驚醒夢中人...你到底要ssl傳遞什麼資訊啊?
10/29 12:04, 15F

10/29 12:04, , 16F
包含帳號密碼....!?
10/29 12:04, 16F

10/29 12:04, , 17F
那有個比較麻煩的做法....做一個iframe(同網域)
10/29 12:04, 17F

10/29 12:05, , 18F
裡面放form action設https,原頁面登入後控制該form
10/29 12:05, 18F

10/29 12:05, , 19F
去做填帳號密碼跟送出的動作
10/29 12:05, 19F

10/29 12:10, , 20F
嗯 就Login Form填完帳密後到AJAX作驗證動作
10/29 12:10, 20F

10/29 12:11, , 21F
我也有查到iframe的做法 看來只能用iframe解了
10/29 12:11, 21F

10/29 12:14, , 22F
但缺點就是我的login popup 沒辦法及時傳回驗證狀態了
10/29 12:14, 22F

10/29 12:37, , 23F
popup? 你都popup了為什麼還要用iframe啊?
10/29 12:37, 23F

10/29 12:37, , 24F
應該說...都popup了,就不必ajax直接form submit了吧?
10/29 12:37, 24F

10/29 12:39, , 25F
而且不管是popup還是iframe都有辦法即時回傳驗證狀態
10/29 12:39, 25F

10/29 12:40, , 26F
在驗證完畢後 導向至能操縱opener/parent的頁面
10/29 12:40, 26F

10/29 12:40, , 27F
再從該導向網頁以script對opener/parent進行操作即可
10/29 12:40, 27F

10/29 13:09, , 28F
但popup在http的頁面下而檢查的Ajax url 在https
10/29 13:09, 28F

10/29 14:10, , 29F
ajax的那端加個Crossdomain的header吧
10/29 14:10, 29F

10/29 15:24, , 30F
Crossdomain header的作法不是全瀏覽器通吃喔
10/29 15:24, 30F

10/29 15:24, , 31F
而且在IE client需要用別的ajax request方法才可以過
10/29 15:24, 31F

10/29 16:53, , 32F
超想無視IE6~9 XD 最好的方法還是全網頁https啦XD
10/29 16:53, 32F

10/29 17:05, , 33F
話說 就算iframe也會有http != https的問題吧?
10/29 17:05, 33F

10/29 17:12, , 34F
原iframe(http) iframe裡的form post到(https)
10/29 17:12, 34F

10/29 17:12, , 35F
sever驗證出結果後 把網頁導到http
10/29 17:12, 35F

10/29 17:14, , 36F
然後該http頁面根據結果使用javascript把結果傳parent
10/29 17:14, 36F

10/29 17:15, , 37F
使用popup頁框的話也是完全相同的流程
10/29 17:15, 37F

10/29 17:15, , 38F
現在的問題是原po明明已經用了popup不知為啥還在popup
10/29 17:15, 38F

10/29 17:15, , 39F
做ajax...而不是直接在popup裡放form post到https
10/29 17:15, 39F

10/29 17:16, , 40F
對齁XD 是說HTTPS的GET也沒不安全啊 server的log記得
10/29 17:16, 40F

10/29 17:17, , 41F
過濾掉就是XDD
10/29 17:17, 41F

10/29 17:18, , 42F
這是好問題XD popup就能直接form去POST了 OwO
10/29 17:18, 42F

10/29 17:19, , 43F
不過有可能popup本身是有額外功能的頁面?
10/29 17:19, 43F

10/29 17:19, , 44F
所以popup本身不能跳開?
10/29 17:19, 44F

10/29 21:14, , 45F
當初是想說如果有錯誤訊息的話直接回傳回popup上
10/29 21:14, 45F

10/29 21:15, , 46F
所以才做了AJAX去驗證是否是可登入的使用者,跟據AJAX
10/29 21:15, 46F

10/29 21:15, , 47F
傳回來的數據再判斷如果可登入就導向登入頁面,否則
10/29 21:15, 47F

10/29 21:16, , 48F
在popup秀出錯誤訊息,但是這樣的做法就是資料有進
10/29 21:16, 48F

10/29 21:17, , 49F
AJAX URL作驗證 但是訊息沒回傳 所以即便成功了也毫無
10/29 21:17, 49F

10/29 21:18, , 50F
反應,只有當POPUP也在https下才能成功,只要POPUP在
10/29 21:18, 50F

10/29 21:18, , 51F
Https下毫無反應..偏偏網頁有些頁面是http有些https..
10/29 21:18, 51F

10/29 21:27, , 52F
有試過直接在popup 用POST到https..但一樣只有驗證成
10/29 21:27, 52F

10/29 21:27, , 53F
功的狀態下是正常,驗證失敗我自己寫的錯誤訊息也是無
10/29 21:27, 53F

10/29 21:27, , 54F
法顯示就是了...
10/29 21:27, 54F

10/30 17:54, , 55F
YQL
10/30 17:54, 55F

11/10 11:02, , 56F
感謝各位,最後還是選擇直接POST到HTTPS的做法了
11/10 11:02, 56F

11/21 12:33, , 57F
網路沒有絕對安全
11/21 12:33, 57F
文章代碼(AID): #1IRnSpws (Ajax)
文章代碼(AID): #1IRnSpws (Ajax)