问题标签 [access-control]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C#:如何检查我是否可以读取和/或删除目录
我递归地遍历一堆目录。其中一些(如D:\$RECYCLE.BIN\S-1-5-20)给我一个System.UnauthorizedAccessException
. 我想我可以抓住它并继续前进,但我宁愿提前弄清楚。
所以,当我有一个DirectoryInfo
对象时。我怎样才能看到我是否被允许GetDirectories()
并且可能Delete()
它?
c++ - 友谊范围 C++
在“C++ 编程语言”的第 11.5.1 节中,Bjarne Stroustrup 写道:
与成员声明一样,友元声明不会将名称引入封闭范围。
例如:
对于大型程序和大型类,一个类不会“悄悄地”将名称添加到其封闭范围是很好的。对于可以在许多不同上下文中实例化的模板类(第 13 章),这非常重要。
然而,下一节接着说这个类必须是先前定义的,或者定义在非类范围内,立即包含声明它为友元的类。
我的问题是,由于该类需要预先定义或定义在非类范围内立即封闭声明它为朋友的类,因此在第一个示例Xform
中不能超出范围,因为大概类会在定义类之前已经定义了Matrix
。此外,鉴于朋友类需要预先定义或在授予者类之后立即定义的限制,我想不出这样的情况,朋友类将不在范围内!
其次,我在本节中对 Bjarne 的解释是否正确,因为:
- 仅对于友元类,友元类必须先前已在封闭范围中定义,或者在非类范围之后立即定义。
- 对于一个函数,必须先前已在封闭范围内声明,或者也可以通过具有类型 == '友谊授予者' 类的参数来找到它?
java - 具有对象粒度的 java 安全框架
我正在寻找具有对象粒度的 Java Web 应用程序的安全框架。
这意味着我不只是想通过 url 或角色进行过滤,而是通过系统内域对象的特定用户所有权进行过滤。
例如,如果有一个Message
对象有一个Sender
用户和一个Receiver
用户,我希望能够对其进行配置,以便每个消息都可以被它的发送者 RW 和它的接收者 RO。
或者,例如,所有用户都可以查看所有用户配置文件,但只能由所有者编辑。
当然,这些规则我想用元数据(注释、xml 文件等)来定义它们,而不是嵌入到我的业务逻辑中。
外面有这样的野兽吗?最好是开源的。
php - 在 CodeIgniter 中制作管理页面的最佳方法?
我正在使用 CodeIgniter 开发一个应用程序,并且我想为应用程序中的几个对象提供管理页面,我想知道将它们放入 MVC 结构的更好方法是什么。
想法1:
在每个控制器中,有一个管理功能,并将我想要的所有管理页面添加到该功能中。示例网址:domain.com/articles/admin
想法 2
制作一个新的管理控制器,它必须引用许多不同的模型,并将所有管理页面放在那里。示例网址:domain.com/admin/articles
哪种方式会更好?
编辑澄清:通过管理功能,我的意思是能够对任何对象执行基本的 CRUD 操作,并能够显示所有所述对象的列表。
php - 角色可访问的 Drupal 部分
我需要根据 Drupal 用户的角色限制对 Drupal 站点上内容的访问。
http://site.com/managers/intro
http://site.com/managers/reviews
http://site.com/managers/up-for-raises
内容可以是多种内容类型,并且不限于一种特定的内容类型。这些内容类型将在网站的其他地方使用,因此我无法锁定整个内容类型。
我可以让所有节点/视图在创建时通过菜单设置住在这些地址,但我不知道如何通过角色限制访问,而不是 template.php 中的一堆预处理函数,但这似乎做错了。
我搜索了一个模块并在#drupal-support IRC 上进行了询问,但没有出现使用drupal 角色作为限制因素的结果。
iphone - 限制对 iPhone 应用程序的服务器访问
我正在构建一个客户端/服务器 iPhone 游戏,我想阻止第三方客户端访问服务器。这有两个原因:第一,我的收入模式是出售客户并赠送服务,第二,我想避免助长作弊的客户激增。
我正在用 rails 编写服务器的第一个版本,但我正在考虑在某个时候转移到 erlang。
我正在考虑两种方法:
生成一个“用户名”(例如,一个 GUID)并使用应用程序附带的秘密对其进行哈希处理(SHA256 或 MD5),并将结果用作“密码”。当客户端与服务器连接时,两者都是通过 HTTP Basic Auth over https 发送的。服务器使用相同的秘密对用户名进行哈希处理,并确保它们匹配。
使用 iPhone 应用程序发送客户端证书。服务器配置为要求存在客户端证书。
第一种方法的优点是简单,开销低,并且可能更容易混淆应用程序中的秘密。
第二种方法经过了很好的测试和验证,但可能会产生更高的开销。但是,我对客户证书的了解处于“在 Delta Airlines 机上杂志中阅读”级别。这会产生多少带宽和处理开销?每个请求传输的实际数据大约为千字节。
design-patterns - 访问控制设计模式
我正在开发一个 PHP 应用程序,我想为我的一些对象添加访问控制。我没有将这个问题标记为 PHP,因为我觉得这个问题不是特定于语言的。
假设我有一个“服务类”
许多服务使用它作为基类。一个伪示例是:
后来我想添加访问控制。示例“getCompanyInfoById”方法是“读取”操作,因此需要“读取”权限。
此时我可以通过以下方式实现它:
- 将访问控制添加到服务类。每个方法(例如 getCompanyInfoById)都必须在内部调用“hasPrivilege”方法,然后才能完成操作并返回结果。
- 将所有服务对象包装在某种代理对象中,该对象将在调用内部对象中的方法之前检查权限。
- 完全分离访问控制,并强制“调用者”在调用方法之前检查权限。
每个选项的缺点:
- 这需要更改所有服务,并要求它们了解访问控制。我觉得这违背了关注点的分离。
- 这破坏了 OOP 特性,例如多态性。调用者不再知道任何服务支持哪些接口。
- 这是最灵活的,但最大的缺点是检查权限现在是隐式的。开发人员可能会“忘记”或复杂的代码路径会导致调用未经授权的服务。
有没有更好的方法来解决这个问题?
sql-server - 如何查询特定用户的访问权限
我有一个要继承的旧数据库。访问权限在任何地方都没有明确定义,我正在寻找一种快速的方法来为每个人获取它们。假设我的数据库中有一个不属于任何成员角色的用户。但是,他们已被授予对特定表执行特定操作的权限。例如,他们可以在表 X 上运行选择查询并在表 Y 上运行更新查询。我知道我可以通过转到每个用户的属性来找出他们有什么。但是,我可以想象,某处必须有一个系统表,其中定义了所有这些并使其易于查询。这个查询会是什么样子。
仅供参考:我正在使用 SQL Server 2005
更新:还有一种方法可以对服务器上的所有数据库执行此操作吗?
access-control - 访问控制 - RBAC 是否值得在分层用户管理系统中实施?
最近我一直在考虑在我的应用程序中使用的最佳访问控制模型。我一直在阅读 RBAC 并且角色概念很好(特别是如果您拥有大量不同的权限),但是,我不确定它对分层用户管理的适用性如何,如下所示:
每个用户都属于一个或多个组。组被组织成一棵树(如目录结构)。组和用户都可以被分配权限(或角色,如果我们在谈论 RBAC)并且可能应该有某种继承(即用户和组继承他们所属组的权限)和覆盖功能。群组本身的目的不仅仅是权限管理——它们在应用程序中还有其他用途。
我想如果在没有角色的情况下使用权限(“角色”是 RBAC 术语中的权限集合),上述所有内容对于进一步设计和实施都不会造成太大问题,因为权限非常精细,而角色更加单一。在组/用户级别实现权限继承/覆盖不会太困难。对角色做同样的事情可能会更棘手,但另一方面,角色对于普通用户来说更容易理解。
现在,我自己更倾向于“仅限权限”模型,因为:
- 该应用程序可能不会拥有超过 30 种不同的权限;
- 组本身可用于设置权限,这已经提供了角色的优点之一 - 易于对多个用户进行权限管理
- 这个概念看起来很清晰,因此很容易实现
但是,如果向我展示了一个逻辑且易于理解的基于角色的模型,它比“仅权限”模型具有优势,我会认真考虑一下。是否有任何定义明确的 RBAC 模型(论文、实现等)已经可用,可以应用/适应上述要求(我已经搜索了一段时间,但我发现的那些要么限制性太强,要么没有'不考虑分级用户管理)?您对此事的总体看法是什么?在这种情况下,RBAC 值得吗?
php - 如何根据用户在 CakePHP 中的权限将用户路由到不同的功能?
以前可能有人问过这个问题,我也看到过类似的解决方案……也许我想错了。
我想要一个名为 user/edit 的链接,如果用户是管理员,它应该路由到 admin_ 如果他们是基本用户,它应该路由到 user_ 等......有没有办法以一种巧妙的方式做到这一点?
我已经看到了与 user/admin_edit 中的类型相反的解决方案,它会将您带到 user/edit...