通过 Web 保护文件:基于细粒度授权的文件访问

2024-01-03

我有一个员工可以上传文件的系统。有以下三种方式

以公共、私人或保护模式上传到我的帐户
以公共、私人或保护模式上传至部门帐户
以公共、私有或保护模式上传到组织帐户

其中公共对任何人都可见,私有仅对组或个人而言并且对组织中的任何人都受保护。

组织的所有文件都存储在文件服务器上的 /files// 目录中 喜欢

files
+-- 234809
| +img1.jpg
| +doc1.pdf
+-- 808234
| +doc2.pdf

我将文件路径和隐私级别存储在数据库中。因此,我可以控制是否在给定页面上向用户显示文件 URL 的链接。

问题是,我无法控制文件的 URL...因此,如果有人在浏览器的地址栏中输入 img1.jpg 的 URL,则无法知道登录用户是否有资格查看 img1 .jpg。

有什么建议吗?


它是一个Java应用程序。但是,Glassfish 有一个单独的实例充当文件服务器。由于该应用程序尚未发布,因此我们愿意采用更好的文件访问策略。

访问文件的用户可能已登录,也可能未登录。但是,如果我们知道正在访问的文件是私有文件还是共享文件,那么我们始终可以通过重定向到登录页面来对用户进行身份验证。

Thanks
Nishant


你提出了一个有趣的问题,你对这个问题的理解是正确的。

根据提供内容的 IIS 版本,如果内容位于您的虚拟目录中,您甚至可能没有访问控制权。

此类场景的典型解决方案是将文件存储在无法通过 Internet 访问的目录中,并使用受保护的 HttpHandler 并将文件流式传输出去。

有多种方法可以实现此目的,最简单的是将 HttpHandler 映射到不存在的目录(例如 /downloads),并从 RequestUri 中解析文件名,设置正确的内容类型并将文件写入 Response。

在这种情况下,您的 HttpHandler 受到保护,使您能够确定访问权限。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Web 保护文件:基于细粒度授权的文件访问 的相关文章

  • 在数据库中存储密码的最佳方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 什么是 API 密钥? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如今 我几乎在每个跨服务应用程序中都看到这个词 API 密钥到底是什么以及它的用途是什么 另外 公共 API 密钥和私有 API 密钥
  • 存储外部站点(不使用 OAuth)的用户凭据的智能方法是什么?

    我意识到 一般来说 您不应该直接存储用户凭据 即以纯文本形式 相反 最好存储它们的某种加密形式 但是 假设我创建了一个与其他第三方网站交互的网站 假设这个第 3 方站点提供了一个 API 需要用户的凭据 使用该站点 进行身份验证 如果我的目
  • 受信任的 1.5 小程序可以执行系统命令吗?

    如果是的话 这个能力有什么限制吗 具体来说 我需要以 Mac OSX 为目标 我以前用过这个在 Windows 系统上启动东西 但从未在 Mac 上尝试过 public void launchScript String args Strin
  • 日志锻造强化修复

    我正在使用 Fortify SCA 来查找我的应用程序中的安全问题 作为大学作业 我遇到了一些无法解决的 日志锻造 问题 基本上 我记录一些来自 Web 界面的用户输入的值 logger warn current id not valid
  • 检查字符串是否是哈希值

    我正在使用 SHA 512 来散列我的密码 当然还有盐 我认为我想要的不可能 但无论如何我们还是要问一下 有没有办法检查字符串是否已经是 SHA 512 或其他算法 哈希值 当用户登录时 我想检查他的密码 如果它仍然是纯文本 则应将其转换为
  • 任何第三方都可以从我的项目加载嵌入式资源吗?

    请参考我的一篇之前的问题 https stackoverflow com questions 14681364 issues passing data from dll to application 我问的是如何从 DLL 加载已编译的资源
  • 数据加密

    存储大量信用卡信息的数据库是我们刚刚完成的系统中不可避免的一部分 不过 我想要的是卡号的最终安全性 我们可以设置一种加密和解密机制 但我们自己无法解密任何给定的号码 我所追求的是一种即使在数据库级别也能保护这些信息的方法 这样任何人都无法进
  • Couchdb - 为读者用户提供的蒲团

    我想知道如何阻止读者访问 couchdb 中的 futon utils 只允许管理员访问 我需要这样做 为什么如果读者用户访问蒲团 他可以看到我所有数据库的名称以及有多少文档 我的应用程序应该让读者只有在知道文档 ID 时才能访问文档 引用
  • Microsoft 帐户 JWT 身份验证令牌如何签名?

    在我的 Web 应用程序中 我需要验证从 Live SDK 5 6 获取的 JWT 身份验证令牌 不久前 这些令牌的签名是使用签名密钥的 Base64 编码标头 有效负载的 HMACSHA256 哈希 该签名密钥是应用程序秘密 来自 acc
  • 如何使用公共客户端颁发的令牌查询keycloak资源权限

    我有一个受 keycloak 保护的前端 Javascript 客户端 前端应用程序的 Keycloak 客户端类型为Public并打电话给blog gui 我还有一个受保护的 APIConfidential客户端名为 blog api 其
  • HTTP 基本身份验证 + 访问令牌?

    我正在开发一个 REST API 计划将其与 Web 和 IOS 应用程序一起使用 我打算让这个 API 在一段时间内保持私有 私有意味着我只希望我的 Web 应用程序和 ios 应用程序访问该 API 我已经阅读了许多不同的身份验证方法
  • Flex 和 crossdomain.xml

    我想知道将 crossdomain xml 添加到应用程序服务器的根目录是否存在任何安全问题 它可以添加到服务器的任何其他部分吗 您是否知道任何不需要服务器放置此文件的解决方法 谢谢 达米安 通过添加 crossdomain xml 主要的
  • 尝试访问 iframe 内容(不同子域);尝试设置 CORS

    我将文件托管在domain com 其中包含一个 iframe 其文档托管在s3 domain com 我正在尝试访问 iframe 的内容 但收到以下信息 不安全的 JavaScript 尝试通过 URL 访问框架http s3 doma
  • 还记得我的 Cookie 最佳实践吗?

    我读到了许多关于这个论点的老问题 我认为最好的做法是设置一个 cookieusername user id和一个随机令牌 相同 cookie 的数据在 cookie 创建时存储在数据库中 当用户拥有 cookie 时 它 们会进行比较 co
  • 如何防止客户修改 firebase 数据(在没有后端的 Web 应用程序中)?

    我最近开始探索 firebase 作为我的 Angular JS 单页网站的身份验证解决方案 它看起来很完美 然而 从安全角度来看 我不太确定是否将逻辑保留在我的应用程序中的客户端 假设我对在我的网站上注册的客户进行了 isProfileC
  • https登录的安全性?

    我正在编写一个 Apple iOS 应用程序 用于登录帐户并获取一些余额 它使用纯 html 链接进行登录 用户名和密码在运行时动态加载到登录链接 我使用 Wireshark 嗅探了流量 但在发送的任何包中都找不到用户名或密码 我猜 htt
  • 如何在Rails 4.1中使用secrets.yml作为API_KEYS?

    在我最近的一个项目中 我开始于 gitignoring包含机密和环境变量的文件 因此 除了包含第三方机密 例如 Stripe Twitter API 或 Facebook Graph 或内部 api keys 等 的文件外 整个项目都致力于
  • 如何在 JASPIC 中保存经过身份验证的用户?

    我开发了一个安全认证模块 SAM 并实现了validateRequest方法 我还有一个简单的 Web 应用程序配置为使用此 SAM In my validateRequest方法 我检查 clientSubject 并设置一个Caller
  • Java:BCrypt 的用途很好吗?

    我想知道我当前的 BCrypt 实现是否正确 我知道我没有使用BCrypt checkpw 这可能会导致问题 所以这是我在这里验证的主要原因 Hasher java容器类 abstract public class Hasher publi

随机推荐

  • 如何从相对路径使用动态链接库

    我想使用 go 应用程序中的动态 C 库 我可以构建应用程序 但在运行时找不到该库 这是我的项目的结构 src ctest lib libmylib so libmylib h main go 在 main go 中 我导入 h 和 so
  • UIPageControl + UIAppearance

    UIAppearance 的文档非常糟糕 我想自定义 UIPageController 的颜色 但我无法弄清楚要设置哪些属性 当我走的时候 UIPagecontrol appearance set我可能有数百个选择 所以几乎不可能弄清楚什么
  • 如何使用 Invoke-WebRequest 查看发送的标头?

    当我使用以下命令时 Invoke WebRequest UseBasicParsing Uri http example com SessionVariable Foo UserAgent Bar 我得到以下输出 StatusCode 20
  • 识别WinRT的宏?

    是否有新的宏可以在代码中确定应用程序是否在 WinRT 上运行 正如我正在与LoadLibrary 如果有一个宏来替换所有调用 那就太好了LoadLibrary与一到LoadPackagedLibrary 我理解文档是正确的 因为我可以通过
  • FosUserbundle 和 symfony 2 模板和编辑

    我是 symfony 2 的新手 我刚刚设置了基本的 FOSuserbundle 但我有几个问题 我已经设置了新的布局模板 但我找不到在哪里更改登录 注册 个人资料的表单模板 我找不到如何编辑用户个人资料 我可以使用 profile 查看个
  • 从 React 组件中外部加载的 HTML 访问内部函数

    我有以下用例 一些来自第三方源的 HTML 被加载到我的 React 组件中 class MyComponent extends Component render return div div 在外部加载的 HTML 内部 存在特定跨度的单
  • 从服务器获取 Windows 登录名

    我已经被这个问题困扰好几天了 非常感谢任何帮助 我有一个 SQL 触发器 它调用用 C 编写的 DLL 在此函数中 我需要发起触发触发器的 SQL 命令的人员的 Windows 登录名 我从 C 还是 SQL 获取此信息并不重要 不幸的是
  • 我试图在 MATLAB 中使用 LaTex 字符串作为轴标签,但无缘无故地得到一个数字

    我正在尝试使用 LaTex 字符串为 y 轴标签插入一个分数 我得到一个数字 采用标准字体和ylabel位置 以及我的预期 我试图插入的分数 当我编辑代码时 这对我来说已经改变了 但是当我尝试调查这个问题时就停止了 我输入的是 353 19
  • 没有 CSRF 代币的表单:有什么风险

    如果我不在表单中使用 csrf 令牌 我到底会面临哪些风险 我并不是在寻找简单的风险标签或名称 因为这些可能会令人困惑 我需要用简单的英语了解攻击者到底可以做什么以及只有在什么情况下他们才能做到这一点 CSRF 漏洞允许恶意用户 或网站 让
  • 将 JanusGraph 与 Solr 结合使用

    设置 JanusGraph 我在控制台中注意到以下内容 09 04 12 175 INFO ReflectiveConfigOptionLoader 173 Loaded and initialized config classes 10
  • 将 HTMLCollection 转换为数组的最有效方法

    除了迭代所述集合的内容并手动将每个项目推入数组之外 是否有更有效的方法将 HTMLCollection 转换为数组 var arr Array prototype slice call htmlCollection 使用 本机 代码将具有相
  • Apache poi 多行项目符号点可以工作,但不能多段落?

    使用 apache poi 库生成 Word 文档要点正在工作 但我尝试多个段落不起作用 我已粘贴在下面 我的java类代码 package samplebuller import java io FileInputStream impor
  • 如何在 PHP 中拆分字符串中的泰米尔字符

    如何拆分字符串中的泰米尔语字符 当我使用preg match all u str results 我得到字符 和 如何获得组合字符 和 我想你应该能够使用the grapheme extract功能 http php net manual
  • 实例替代IO的目的是什么?

    此实例似乎行为不正常 gt guard True lt gt guard False gt guard False lt gt guard False Exception user error mzero 有人可能会争辩说 这不会导致任何其
  • 用户界面问题:一种让 MDI 子项显示在任务栏中的方法?

    我希望得到您对以下问题的建议 我们正在为正在开发的 Windows 窗体应用程序研究不同的用户界面解决方案 我们得出的结论是 在我看来 最好的解决方案是单文档界面 就像 MS Word 那样 也就是说 每次我们创建一个新文档时 它将在一个新
  • 将我的应用程序与联系人集成

    我想将我的应用程序与联系人管理器集成 更确切地说 当我在手机中运行 联系人 应用程序 然后单击任何头像时 会出现一个弹出 快速联系人徽章 窗口 其中包含一些可供选择的应用程序 联系人 邮件等 我想在该位置添加我的应用程序 那可能吗 我希望能
  • 如何在 Jetpack Compose Desktop 中加载字体?

    在 Android 版 Jetpack Compose 中 您可以执行以下操作 val fontFamily FontFamily Font resId R font my font 400 regular weight FontWeigh
  • 将自定义 Forager 与 OptaPlanner 结合使用时的 XStream ForbiddenClassException

    我最近将 optaplanner 版本从版本 7 0 0 升级到版本 7 4 1 我使用在配置文件中声明的自定义 Forager 如下所示
  • Android 3d 动画,如 Google Now 启动器菜单动画

    我需要在这样的活动或片段之间制作动画 我用Android Api gt 14 http www youtube com watch v cNMqIv5Ocnk http www youtube com watch v cNMqIv5Ocnk
  • 通过 Web 保护文件:基于细粒度授权的文件访问

    我有一个员工可以上传文件的系统 有以下三种方式 以公共 私人或保护模式上传到我的帐户以公共 私人或保护模式上传至部门帐户以公共 私有或保护模式上传到组织帐户 其中公共对任何人都可见 私有仅对组或个人而言并且对组织中的任何人都受保护 组织的所