V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
liubin
V2EX  ›  云计算

Parse这样的BAAS如何保证AppID和Javascript Key的安全(不被乱用)?

  •  
  •   liubin · 2014-01-09 12:40:47 +08:00 · 5868 次点击
    这是一个创建于 3758 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想问一下这样(纯)前端(js)的服务,怎么保证别人不能使用我的ID和Key。
    看了一下Parse和Firebase这样的东西,我的理解是他们的ACL(或者叫Security Rules)都是针对对象级别的,比如Parse的每个obejct都有一个ACL字段,可以指定谁能读,谁能写。

    此外,他们也都提供(集成)了用户认证(username/password,social)等,这样,就能确保用户和他们的数据的安全性。这和非BAAS应该是一样的。

    这两个服务器的通信也都是SSL的,FB更是号称采用了2048位加密。

    我的问题是,js的话代码都是暴露的,key和id都是明文的。我怎么能防止别人使用这个key和id呢?
    10 条回复    1970-01-01 08:00:00 +08:00
    openroc
        1
    openroc  
       2014-01-09 17:33:12 +08:00
    最近也在研究这个。 先mark一下。
    openroc
        2
    openroc  
       2014-01-10 11:23:14 +08:00
    看了一下parse的文档,根据他们介绍的security,

    App ID和App Key是不保证安全的,而且要求,client和server之间的通信必须是https。接下来主要class level的控制,以及object level的控制。才能保护到你想保护的数据。

    因此,即便有了ID和key,只是开放的数据,对写爬虫,或者其他第3获取你的内容的容易了,可以直接通过api获取数据。你通过class level和object level的限制的数据,还是不能轻易被获取的。

    由于user login,Parse返回了session token。 https://parse.com/docs/rest#users
    liubin
        3
    liubin  
    OP
       2014-01-10 12:37:50 +08:00
    @openroc 是,他们都有针对类和对象的Class设置。但是还是不能防止别人使用我的id和key,比如写入垃圾数据等。
    openroc
        4
    openroc  
       2014-01-10 20:20:30 +08:00
    put、post都限制用户了,不是你的用户肯定不能写入,如果是你的用户,就应该写入。:)

    因此,id和key只是个标识,关键安全机制在class level和object level的权限控制。
    openroc
        5
    openroc  
       2014-01-10 20:21:18 +08:00
    btw,如果你的用户写入垃圾数据,就和v2上,发垃圾贴一样,该运维的处理。
    sun391
        6
    sun391  
       2014-01-10 20:23:40 +08:00 via iPhone
    比较担心的是恶意调用api提交垃圾数据,或者是耗你的api调用次数。

    Js毕竟是明文的,没办法

    Parse主要的应用还是Native APP
    sobigfish
        7
    sobigfish  
       2014-01-12 17:27:59 +08:00
    实在担心就弄个主机包装一下?
    hjiang
        8
    hjiang  
       2014-04-08 00:13:26 +08:00
    要做到安全,就需要在写程序的时候就假设 app id 和 app key 都是公开的。通过 ACL 来控制权限。 AVOS Cloud (http://avoscloud.com) 和 Parse 都是使用同样的机制。
    liubin
        9
    liubin  
    OP
       2014-04-08 09:29:42 +08:00
    @hjiang 3ks,我主要关心的是如何防止别人拿你的id和key去访问数据。。。。
    hjiang
        10
    hjiang  
       2014-04-17 00:21:29 +08:00
    @liubin 也可以用 ACL 控制对私有数据的读取啊,有些数据可能必须让所有人可以读取才行,但这一点和你自己开发后端没有不同。别人同样可以通过向你的服务器发送一些请求来读取到一些数据。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3202 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:38 · PVG 22:38 · LAX 07:38 · JFK 10:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.