【问题标题】:What is the reason to implement authorization on app engine?在应用引擎上实施授权的原因是什么?
【发布时间】:2014-12-30 22:30:11
【问题描述】:

我正在尝试一个带有端点的 Android 示例应用程序。据我了解,我们应该为谷歌应用引擎上的每个方法实现授权(如下代码)。

/**
 * Provides the ability to insert a new Score entity.
 */
@ApiMethod(name = "scores.insert")
public Score insert(Score score, User user) throws OAuthRequestException, IOException {
  ...
}

我想了解(作为初学者),如果我不对方法实施这种授权,是否有人会弄乱我的后端应用程序?他们可以访问数据存储并查看数据库或通过查询访问存储在数据存储上的信息吗?它会导致什么样的安全漏洞? 以便我了解应该对哪些方法实施授权。

还有一点是我认为我不需要的 Index.html。应用程序引擎会自动创建它,但我只想在 Android 上运行这个应用程序。 我可以直接删除还是应该删除?

【问题讨论】:

    标签: android google-app-engine oauth-2.0


    【解决方案1】:

    如果您需要识别用户,您应该将User 参数添加到方法的参数列表中。如果该方法的逻辑为任何用户返回相同的结果,则无需进行用户身份验证,但是这样您就可以让每个人都无需任何身份验证即可调用您的方法。

    如果您设计好端点,就不可能访问数据库或查询数据库。只需限制端点方法返回的内容。

    还有一点是我认为不需要的 Index.html。应用引擎 自动创建它,但我只想在 Android 上运行这个应用程序。 我可以删除它还是应该删除它?

    如果它仍然可以在后端编译和运行,为什么不呢。当您在浏览器中打开应用程序时会显示 index.html,例如https://appname.appspot.com。如果您不想显示任何内容,可以随时提供空文件。

    【讨论】:

    • 感谢您的回答。那么 servlet 想要获取 blob 上传 url 呢?因为我可以用网络浏览器和链接激活它们。这是一个安全问题吗?
    • 您还可以使用浏览器或 curl 或 wget 实用程序调用任何端点方法。如果你设计得好,那根本就不是安全问题。例如,从应用程序中下载一些高级内容可以这样实现:调用端点方法(oauth protected)来获取高级资源的唯一标识符,检查用户是否有权下载内容,然后调用该方法下载 blob 使用这个标识符。这样,只有符合条件的用户才能下载高级内容。
    猜你喜欢
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 2016-08-05
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    相关资源
    最近更新 更多