问题标签 [access-rights]

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.

0 投票
2 回答
187 浏览

security - 如何选择安全模型

我正在寻找在网站上实施访问权限的最佳安全模型。最初应根据以下规则授予对象访问权限:

  • 用户
  • 用户组
  • 等级制度
  • 权限 (CRUD)

我可以使用哪些安全模型,每种模型的优缺点是什么?

谢谢!

0 投票
2 回答
9973 浏览

c# - 为什么注册表写在与预期不同的位置?

我尝试将注册表子项及其对应的值写入注册表,如下所示:

现在的问题是,当我手动(通过 regedit)查看该位置时,我看不到SOFTWARE\Apple\Banana.HKLM

但是当我再次运行上面的代码并调试时,我可以看到两者Registry.LocalMachine.OpenSubKey(subKey)rk.GetValue(regKey)产生之前保存的值。但是我没有通过 regedit 看到给定位置的值。所以在搜索注册表时,我可以在以下位置看到上述键和值:

  1. HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\Apple\Banana

  2. HKEY_USERS\S-1-5-21-44266131-1313801407-2392705078-1000\Software\Classes\VirtualStore\MACHINE\SOFTWARE\Apple\Banana

在这两种情况下,值都与我保存的完全相同。所以我意识到这是我的应用程序读取值的地方,尽管在我的代码中我从HKLM\SOFTWARE\Apple\Banana\..

  1. 为什么会这样?它与访问权限问题有关吗?

  2. 这是预期的行为吗?从某种意义上说,这个值对我来说非常重要,所以我只是知道自动重定位是否存在一些风险!

  3. 是否有正确的写入注册表的方法,以便它保留在其确切位置..

我的帐户是管理员一号,我使用的是 32 位 windows 7。

编辑:据我所知,注册表项存储在当前用户位置而不是 HKLM。当我从其他帐户查询 reg 值时,我没有得到该值。简而言之,首先将其保存到 HKLM 是没有意义的 :(

0 投票
1 回答
900 浏览

linux - 在 linux 上安装具有不同用户帐户的应用程序

linux我有关于在操作系统上安装应用程序的基本问题。我将以 oracle db 安装为例来表达我的问题。在安装 oracle 数据库时,我创建了一个名为的用户组dba,该组中的用户名为ora112. 所以这个用户被允许安装数据库。所以我的问题是如果ora112usesumaks设置为077,那么没有其他用途将能够配置 oracle 数据库。为什么我们需要遵循这种做法。它是在Linux. 请与我分享您的经验。提前感谢您调查此问题

Java说我以这种方式安装应用程序。Java那么由于此访问限制,属于不同用户帐户的其他应用程序将无法在此计算机上运行。

安装应用程序时使用的默认权限是什么。是770吗?

0 投票
2 回答
6702 浏览

web-services - 基于用户查看权限的不同 REST 资源内容

我想根据访问权限为不同用户提供对同一问题的不同答案。我读了这个问题:

在 RESTful 响应中排除私有数据

但我不同意接受的答案,它指出您应该同时提供/people.xml/unauthenticated/people.xml,因为我对 REST 的理解是特定资源应该存在于特定位置,而不是几个取决于您感兴趣的信息量在。

我正在设计的系统比那个系统还要复杂。假设用户创建了多个朋友圈,并为他们分配了不同的访问权限。例如,我的“熟人”圈子可能可以访问我的生日,而我的“专业”圈子可能可以访问我的工作经历,但反之则不行。为了应用我提到的问题的答案,我需要有一种方法来获取所有用户的圈子(出于安全原因我可能想保密),然后通过/circles/a/users/42, /circles/b/users/42,/circles/c/users/42等等,然后合并结果以显示最大数量的可用信息。显然,不一定有一个圈子可以获得其他圈子获得的所有信息。我相信这已经够棘手了(请注意,我可能需要对几种对象执行此操作,并且将来的版本可能需要不同的过程),但是如果我想对特定用户施加安全限制,尽管事实上他也是在我的某些圈子里?这个问题还能解决吗?即使我拒绝回答上述任何问题并提出一个可以给我答案的新问题,它仍然会揭示这样一个事实,即由于个人访问限制,该特定用户会受到不同的对待。

我在这里想念什么?我是否有可能开发 RESTful Web 服务?

如果结论是该行为不是 RESTful 的,那么这是否仍然构成违反 REST 合同在道德上可以接受的情况?如果是这样,有什么负面影响?例如,我是否会冒代理缓存问题的风险?

0 投票
1 回答
1665 浏览

perl - 为什么文件测试运算符不起作用(Perl)?

在“Programming Perl”-w文件测试运算符中描述为:

-w 文件可由有效的 UID/GID 写入。

我有两个文件:

suid设置为 on script.pl,所以当我以用户 caligula 运行它时,有效的 UID/GID 应该是 testuser 的。script.pl是:

但是当我运行它时caligula@ubuntu-host:~$ ./script.pl,输出总是false. 为什么会发生这种情况,可能是我不了解该运算符的正确用法?

我的赞赏。

0 投票
1 回答
1453 浏览

android - 这种 Google LVL 政策实施是否合理安全?

ServerManagedPolicyGoogle 在其许可证验证库中提供的默认值依赖于服务器响应来确定许可证重新验证间隔。这导致需要永久每隔几天重新验证一次。这不仅会给用户带来麻烦,对于长时间没有连接的用户来说,这可能是一个严重的问题。(我们刚刚收到一位用户的询问,该用户预计将在几周内没有互联网连接,这就是提出这个问题的原因。)

总之,我正在寻找一种能够完成两件事的算法:

  1. 与 相比,大大降低了连接要求ServerManagedPolicy
  2. 提供相同级别的反盗版保护。

在回答这个问题时,建议的策略算法是忽略 Google 服务器响应中提供的时间,而是使用大约一个月的 LICENSED 到期期限,每隔几天尝试一次许可证检查(如果收到一个 LICENSED 响应)。

虽然这种方法部分解决了第一个目标,但它仍然要求用户在使用该应用程序时每月连接一次,因此它不适用于我们的(至少一个)用户。

以下算法实现了第一个目标,但我不知道第二个目标。任何指出该算法弱点的评论,或对另一种方法的建议,都将受到欢迎。

  1. 首次运行时,请进行许可证检查并坚持在提供完整功能之前进行 LICENSED 响应。收到后,设置一个相对较短的到期期限(但比 Google Play 提供的退款期限长,目前为 15 分钟)。在此之后还要注册几天的宽限期。
  2. 该应用程序将在许可证到期后再次开始检查。如果连接失败(飞行模式等),它仍然可以工作,直到宽限期到期。
  3. 宽限期到期后,坚持第二次 LICENSED 响应,然后再允许正常的应用程序运行。
  4. 收到第二个 LICENSED 响应后,永久启用该应用程序的所有功能,不再费心检查。
  5. 如果在任何时候收到 UNLICENSED 响应,请永久禁用全部功能。(当然,用户可以通过删除所有应用数据来恢复到第 1 步。)

附加点:

  • 有人建议放弃第一次许可证检查,等到返回期限到期后再进行许可证检查。坚持第一个 LICENSED 响应的目的是防止在许可证检查失败后用户简单地停止应用程序进程、清除应用程序数据并重新启动应用程序的漏洞利用。(即使一次只能使用 15 分钟,该应用程序也能提供价值。)
  • 坚持第二个 LICENSED 响应的目的是绕过购买-运行-备份-退货-恢复漏洞。
  • 我不是在问回调许可证检查是否是一个好主意(这就是谷歌提供的替代其已弃用的复制保护机制的方法)。我也很清楚,没有任何反盗版保护是万无一失的,谷歌的整个许可机制都可以被规避(在这种情况下,所有关于策略算法设计的问题都无关紧要)。这个问题的重点是与其他策略(例如)相比,ServerManagedPolicy上述算法的相对风险(对我们)和收益(对用户)。
0 投票
3 回答
2143 浏览

php - Zend 元数据缓存在文件中

我在 Zend Framework中设置了元数据缓存,因为执行了很多DESCRIBE查询并影响了性能。

我确实可以看到创建的缓存文件,并且网站运行良好。

但是,当我启动单元测试或执行数据库查询的同一应用程序的脚本时,我最终会遇到错误,因为Zend 无法读取缓存文件

这是因为在网站中,缓存文件是由 www 用户创建的,当我运行 phpunit 或脚本时,它会尝试用我的用户读取它们,但它失败了

你有什么解决办法吗?我有一些快速修复的想法,但我正在寻找一个好的/稳定的解决方案。而且我宁愿www尽可能避免运行 phpunit 或脚本(出于实际原因)。

0 投票
1 回答
2754 浏览

c# - 如何在 C# 中正确设置 MemoryMappedFile 安全选项

我的问题不是如何在 C++/C# 中读取/写入共享内存 (MemoryMappedFiles),而是更多关于如何在 C# 中正确设置 MemoryMappedFile 的安全选项(而且我对 C# 很陌生,如果有问题请见谅很傻)。

我有一个作为服务运行的进程(在 SYSTEM 帐户下),它设置了一个共享内存空间。然后我有另一个进程,也作为服务运行(在 SYSTEM 帐户下),它访问该共享内存空间。

它们的第一个版本都是用 C++ 编写的,服务器(“编写器”)主要执行(假设我想要一个 1024 字节的内存段,其名称为 Global\mySegment):

和读者:

此代码运行良好,即编写器创建的共享内存空间在任何情况下都可供读者访问(即,如果编写器作为服务运行或在当前(登录)用户帐户(具有管理员权限)下运行)和如果阅读器作为服务运行或在相同的当前(登录)用户帐户下运行)。

现在,我将这段代码(仅限作者)翻译成 C#,主要是这样做的:

使用此编写器,它仅在编写器由当前用户运行时才有效。当它作为服务启动时(因此由“SYSTEM”用户运行),阅读器不再有权访问共享内存空间(“访问被拒绝”,在这两种情况下,当阅读器由当前用户运行或作为SYSTEM 的服务)。

所以我尝试翻译 C++ 行

到 C#。我发现最近的实现是:

但结果是现在读者根本无法访问共享内存空间,在前面提到的所有4种service-no service组合下

鉴于这种行为对于 C# 代码来说是完全违反直觉的,我有点迷茫......

有人对如何解决这个问题有很好的实施或想法?

非常感谢。

0 投票
1 回答
6246 浏览

permissions - CMake:如何在安装过程中创建具有特定访问权限的目录?

我有一个安装在 /opt 中的应用程序(这是在这里完成的方式)。除了必须由任何人写入的日志目录之外,拥有属于 root 的所有文件和文件夹都很好。

要创建我做的日志目录

我怎样才能 chmod 目录?

0 投票
1 回答
2495 浏览

c# - 使用 FolderBrowserDialog 限制对某些文件夹的访问

我想限制一个人可以选择在我的应用程序中设置其默认保存路径的文件夹。是否有一个类或方法可以让我检查访问权限并限制用户的选项或在他们做出选择后显示错误。FileSystemSecurity.AccessRightType 有可能吗?