作者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