V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Windweller
V2EX  ›  程序员

跨域数据传输的安全问题

  •  
  •   Windweller · 2013-09-02 21:56:26 +08:00 · 3231 次点击
    这是一个创建于 4104 天前的主题,其中的信息可能已经有所发展或是发生改变。
    怎么说呢。。与其说这是一个程序问题,还不如说是个服务器问题。

    我用Java写了一部分网络应用程序,但是能够放Java的服务器不是很有限么?而且大部分还比较贵。我找到了一个免费的,但是数据库只给15M。所以我就想,另外一个Hosting服务,一个月只要30几元,无限数据库,但是只能用PHP。

    网页本身是在PHP所在的服务器上。

    现在的问题是,所有的请求用JavaScript来发送和接受。这样的话,会不会触犯框架的XSS规则?(PHP我用的是CodeIgniter)会不会容易引发CSRF(跨域伪造)?

    更真正的问题是,这玩意可行么。。
    10 条回复    1970-01-01 08:00:00 +08:00
    xing393939
        1
    xing393939  
       2013-09-03 13:58:47 +08:00   ❤️ 1
    楼主在梦游么,开始是说的服务器用java,后来又说php。再说XSS,结果是CSRF。专业术语你知道,但是原理和细节你没有了解,所以你还是不要想了,just do it
    PrideChung
        2
    PrideChung  
       2013-09-03 16:24:29 +08:00   ❤️ 1
    应该不需要跨域,既然两台服务器都在你手上,可以通过设置document.domain来让JavaScript跨子域。
    Windweller
        3
    Windweller  
    OP
       2013-09-03 21:32:38 +08:00
    @xing393939 嗯。。我差不多就只停留在知道专业术语。。和其浅表性意思上。我用的是两台服务器,一台是Java配置,一台是PHP配置。这两台服务器都不在一个服务商手上,是分开的,一台是IXWebhosting(PHP),一台是Heroku提供的免费Java服务。我想让这两个后台互相沟通。。由于我不知道后台如何直接沟通,所以想的是用javascript发送ajax请求到服务器上。但是这会不会存在跨域的问题(我用的CodeIgniter框架。。里面似乎是屏蔽跨域请求的。。)?还是说我可以给这两台服务器同样的域名??(比如一个叫server.xxxx.com一个叫www.xxxx.com
    PrideChung
        4
    PrideChung  
       2013-09-03 22:47:16 +08:00
    @Windweller 屏蔽JavaScript的跨域请求是浏览器干的事情,跟你用什么PHP框架无关。
    Windweller
        5
    Windweller  
    OP
       2013-09-03 22:59:52 +08:00
    @PrideChung 谢谢回答- -!额。。有办法关掉/绕过这种屏蔽么。。我之前提到的(不清楚是不是子域名)。。用www.xxx.com下的js访问server.xxx.com里面的API,现实么。。我之前提的是框架提供一些防御XSS和CSRF攻击的功能,比如这种:http://ellislab.com/codeigniter/user-guide/libraries/security.html
    qiayue
        6
    qiayue  
       2013-09-03 23:33:34 +08:00   ❤️ 1
    你直接用 php 去请求 java 的数据不是更好吗?
    java 那边把数据封装成 json 格式, php 这边获取到之后也可以方便的解析。

    多嘴一句,楼主完全没必要这么折腾啊,写个应用还要一边 java ,一边 php ,不累么?
    PrideChung
        7
    PrideChung  
       2013-09-04 00:02:42 +08:00
    @Windweller 要是跨域的限制这么好绕过,我都改行去当黑客了。按你这种情况,可以按 @qiayue 说的,让跑Java的服务器来向跑PHP的服务器请求数据,不涉及到JavsScript也就没有跨域的问题了。
    Windweller
        8
    Windweller  
    OP
       2013-09-04 00:42:20 +08:00
    @qiayue 好办法,谢谢!!其实我都不知道PHP还能发送请求。。。折腾的原因是我不熟悉PHP。。CRUD在框架帮助下还好。。但复杂逻辑的东西就写不出来了,只能求助Java。。
    roricon
        9
    roricon  
       2013-09-04 13:21:08 +08:00
    其实我只想问,为什么不用远程数据库呢?
    php连接数据库一般也都是用user@host:port的形式。
    只要你PHP那个服务器那端支持从非localhost端登陆就可以直接连了嘛。
    PrideChung
        10
    PrideChung  
       2013-09-04 19:56:03 +08:00
    @roricon 目测就是只支持本地连接数据库。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1988 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:16 · PVG 00:16 · LAX 08:16 · JFK 11:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.