做一个简单的单点登录,遇到其中一个系统使用了动态加密,怎样解决? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
euzen
V2EX    问与答

做一个简单的单点登录,遇到其中一个系统使用了动态加密,怎样解决?

  •  
  •   euzen 2018-05-02 23:54:09 +08:00 2562 次点击
    这是一个创建于 2723 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这个系统的密码使用了 RSA 加密,公钥写在登录页里,每刷新一次公钥就更换一次,然后再配合 cookie 和 session 检查。
    现在的思路是客户端浏览器用 Javascript 取得网页内容,计算出加密的密码串后 post 到远程系统完成登录 ,但卡在 Javascript 跨域的问题上,无法取得这个公钥。搜索了几天,看到的解决方案都是要服务器那边配合,这在本项目是不可能的,那是上级部门的系统。
    请问各位,有什么好的解决方法。
    18 条回复    2018-05-09 01:29:01 +08:00
    yu099
        1
    yu099  
       2018-05-03 00:01:47 +08:00 via Android
    这个安全做的不错啊。很难
    msg7086
        2
    msg7086  
       2018-05-03 00:03:09 +08:00
    你要是做成了,他们就有大麻烦了,做系统的人怕不是要赔死。
    euzen
        3
    euzen  
    OP
       2018-05-03 00:07:56 +08:00
    @msg7086 就是让客户端的人完成自动登录 ,对做系统的人有什么影响呢?
    msg7086
        4
    msg7086  
       2018-05-03 00:10:49 +08:00
    @euzen
    你试着把自己当成是一个黑客,现在要做一个劫持密码登录的系统,然后你想想和你做的单点登录有什么异同。
    euzen
        5
    euzen  
    OP
       2018-05-03 00:19:29 +08:00
    @msg7086 嗯,你说得有道理。
    只从技术上考虑,这有什么办法“破解”?
    msg7086
        6
    msg7086  
       2018-05-03 00:25:16 +08:00
    @euzen
    如果「破解」成功了,要么是做系统的人有大麻烦了,要么是浏览器厂商有大麻烦了。毕竟是个惊天大漏洞。
    你想想,要是第三方网站可以读取你网上银行登录界面数据,还能帮你登录网银,还能在上面读取数据发给第三方网站,你说是不是全球金融行业都要恐慌了。

    要跨过浏览器保护的坎,你可以做成浏览器插件,给自己赋予读写某个网站所有数据的权限,然后让你们的员工都装上,特别是弹出「允许 XX 插件读写 XX 网站的所有数据」权限要求的时候,点击允许按钮。
    然后就可以为所欲为了。
    slizn
        7
    eslizn  
       2018-05-03 00:30:03 +08:00
    代理
    euzen
        8
    euzen  
    OP
       2018-05-03 00:47:59 +08:00
    @msg7086 是已经放弃 JS 读取内容这个想法了,因为知道跨域的问题是无法解决的。“破解”问的是有没有其他的出路。你说的插件的确是一个办法,但安装插件维护麻烦成本太高。更改 IE 设置允许跨域更简单,但这不是从“技术”层面上解决。提这个问题是希望得到本人知识面以外的一点指点,借此开阔眼界。
    euzen
        9
    euzen  
    OP
       2018-05-03 00:48:47 +08:00
    @eslizn 可以多说两句吗?
    momocraft
        10
    momocraft  
       2018-05-03 00:57:05 +08:00   2
    > js 者的三大之一: 怎 (反器的安全策略) 跨域求
    msg7086
        11
    msg7086  
       2018-05-03 00:57:21 +08:00
    他说的反向代理,但是和要求有出入。

    禁止第三方读取是原系统的要求,想要绕过必然要走一些歪路。
    正道当然是类似 CORS 这样,直接和原系统 API 交互。
    没有正道可走的话,就得走成本高昂的歪路了。

    我觉得吧,不管哪条歪路,成本高昂是跑不掉了。
    eslizn
        12
    eslizn  
       2018-05-03 01:16:54 +08:00
    @euzen 就是把这个过程放在你自己的服务器上做 所有的用户都是通过你的服务器去访问上游服务器,这样应该是能满足你的需求的
    euzen
        13
    euzen  
    OP
       2018-05-03 07:56:45 +08:00 via iPhone
    @eslizn 那就是登录之后的操作也要经代理服务器,这不太现实。
    euzen
        14
    euzen  
    OP
       2018-05-03 08:08:54 +08:00 via iPhone
    @msg7086 只要用户那里无需做特别设置,付出一定代价还是可以接受的,但了解越多,对这个系统的接入越没信心了。
    一开在自己服务后台通过 PHP curl 在对方服务上获取用户信息这个轻易搞定,以为整个任务难度不大,结果卡在浏览器安全策略上。也算长知识了。
    euzen
        15
    euzen  
    OP
       2018-05-03 08:58:29 +08:00 via iPhone
    @msg7086 说到插件,flash 能不能解决跨域的问题?
    msg7086
        16
    msg7086  
       2018-05-04 00:35:15 +08:00
    @euzen Flash 跨域也需要配置文件。

    我说过了,如果什么配置都不用,也不用像装插件那样审核+确认,就可以直接跨域读写,那就是全球性的安全危机了。你的方案如果能读写你们的内部系统,岂不是也能读写网银的页面了。
    zhaishunqi
        17
    zhaishunqi  
       2018-05-08 17:11:32 +08:00
    @msg7086
    确实如你所说,没接触过这部分,但是现在想想之前公司的单点登录系统,确实是需要安装一个认证软件才能用.
    msg7086
        18
    msg7086  
       2018-05-09 01:29:01 +08:00
    @zhaishunqi 单点登录是需要被登录的服务器配合开白名单的,CORS 或者 Crossdomain.xml 。
    直接跨域读写是不行的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1300 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 23:52 PVG 07:52 LAX 16:52 JFK 19:52
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86