【问题标题】:Restrict public access to files in google cloud php application限制对谷歌云 php 应用程序中文件的公共访问
【发布时间】:2017-01-29 18:21:36
【问题描述】:

我已经将一个 php 应用程序部署到 google 应用程序引擎。 app.yaml 文件如下所示:

- url: /css
  static_dir: css

- url: /js
  static_dir: js

- url: /api
  script: api.php

- url: /
  static_files: index.html
  upload: index.html

到目前为止,我可以使用以下 url 访问 js 文件夹中的任何文件:project-name.appspot.com/js/custom.js。任何用户都不应仅通过在 url 中键入路径来查看文件的内容。我想限制对除 index.html 之外的任何文件的公共访问。我们怎样才能做到这一点?

谢谢

【问题讨论】:

  • 那些js 文件打算如何使用?嵌入在 HTML 文件中?通过链接引用?
  • 嗨@DanCornilescu,js和css文件旨在通过等链接使用。

标签: php google-app-engine gcloud app.yaml


【解决方案1】:

由于js 文件是通过链接访问的(通过浏览器,对用户透明,在呈现包含这些链接的页面时),那么你不能真正隐藏它们的链接 - 他们会如果用户直接在浏览器中键入相应的链接,也可以访问。

但是,您可以做的是将这些链接的访问权限限制仅限授权用户(其他用户将收到权限被拒绝错误)。

如果您使用的是 Google 的 Users API,那么您所要做的就是在您的 app.yaml 文件中配置访问权限(请参阅 Handlers element 表中的 login 行),如下所示:

- url: /js
  static_dir: js
  login: required

如果您使用其他身份验证方法,那么我能想到的唯一选择是不发布 js 目录为static_dir(因为静态资源由 GAE 直接提供给任何人都无需接触您的应用程序实例/代码,例如 CDN)。而是通过您的应用程序代码动态地提供 js 文件 - 就像您使用 api.php 代码一样。通过这种方式,您可以根据每个请求为每个单独的文件实施您希望的任何访问策略(例如,根据您的身份验证方法检查用户登录/会话凭据)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 2013-07-26
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    相关资源
    最近更新 更多