标签: access-control

保持一个巨魔 - 知识产权禁令被认为有害吗?用什么代替?

我在一个讨论论坛的技术方面,这个讨论论坛受到巨魔的困扰(据我所知,这是一个有形的人).似乎社区已经用尽所有通信手段(毫无疑问,这是一个net.troll,而不是一个无能的用户),包括面对面.

我可能需要阻止该人访问该网站,但我不确定如何(它已经拒绝自行离开).该网站需要使用电子邮件地址进行注册,该地址会为您提供用户名.我可以阻止用户名,但是巨魔可以很容易地注册一个新用户名.

现在,有很多关于"如何进行知识产权禁令以及在什么层面进行"的问答,但值得麻烦吗?

知识产权禁令是否有助于阻止巨魔?如果不是,那是什么?或者,我可以将IP禁令与其他形式的保护相结合吗?

我对IP禁令的问题很多:

  • 巨魔来自几个不同的IP块(家庭/学校/开放wifi/......?)
  • IP地址似乎是动态分​​配的(通常在这里使用DSL)
  • 我怀疑可能通过代理和/或VPN对新账户进行套接
  • 至少在一种情况下,还有其他用户来自同一个IP(我怀疑是一个大的NAT - 确认:在这种情况下,整个大学都是从一个公共IP地址后面访问网络)

我似乎将通过技术手段解决社会问题,而且这种前景似乎很暗淡.

access-control

12
推荐指数
1
解决办法
1762
查看次数

如何在Apache中使用PHP脚本进行访问控制

我正在寻找一种方法来使用PHP脚本来控制对Apache资源的访问.我希望拥有不依赖于目标资源的访问控制; 即它将适用于html,文件,其他脚本和cgi程序,就像"允许来自"或"拒绝来自"指令一样 - 除了使用自定义逻辑.

我已经看了几种方法来尝试管理它:

  1. 使用像mod_auth_script这样的apache模块(好但是这个模块很旧,我认为不能很好地扩展)
  2. 使用FastCGI指令FastCgiAccessChecker
  3. 创建我自己的apache模块来调用php并做我需要的任何事情

鉴于FastCGI的普及,其中#2看起来最有前途,也是最便携的.所以,我设法换掉了通常的linux php模块,让php通过fastcgi工作.它比在Windows上更难,但最终作为外部服务器工作,即使用Apache指令

FastCGIExternalServer /var/www/html/thing -host 192.168.0.11:9000

并启动php守护进程

php-cgi -q -b 192.168.0.11:9000 &

试图找到一种使用FastCgiAccessChecker调用PHP脚本的方法遇到了麻烦.

我尝试过各种方法尝试通过更改FastCGIExternalServer和/或FastCgiAccessChecker指令中的文件名来传递我想要运行的脚本名称 - 不起作用.我也尝试用脚本说明符启动php-cgi,即

php-cgi -q -b 192.168.0.11:9000 -f /var/www/html/thing/access.php &

什么都行不通.我可以告诉apache识别我的指令,因为当我包含FastCgiAccessChecker然后访问一个php页面时,内容类型更改为text/plain,如果它是一个脚本,我会从页面服务中丢失第一个~8000字节的内容(否)想法为什么).但它不会调用我想运行的PHP脚本.

据我所知,发生的事情是FastCgiAccessChecker假定指定的fastcgi服务器专门编译为充当访问检查器.没有办法告诉fastcgi服务器(在我的情况下是PHP)运行什么脚本来进行访问检查.

我在网上搜索过,据我所知,没有人曾尝试过使用PHP脚本,或者没有人写过.

所以我的问题是:我该怎么做?我可以看到一些可能性:

1)我遗漏了一些东西,并且有一些神奇的方法让FastCgiAccessChecker做我想做的事:运行PHP脚本来控制apache访问控制

2)我在c中编写自己的FastCGI服务器并嵌入PHP,因此我可以指定我想要运行的PHP脚本(我花了几分钟时间查看它;它看起来很复杂和可怕,我没有在c中工作自1995年以来)

3)我放弃了FastCGI并编写了一个apache模块来直接调用我的PHP脚本来控制访问.(看起来也很复杂;而且这种技术需要为每个执行PHP的请求生成一个新进程.)

有没有人有任何建议,无论是如何让FastCGI做我想要的,或者是(合理地)简单替代FastCGI?

感谢你能提出的任何建议

php apache security fastcgi access-control

12
推荐指数
1
解决办法
1930
查看次数

如何表示RESTful属性级访问控制?

我一直在wra my my and and and and and and and..............我想写一个很好的完全RESTful服务来返回资源,但是你有权根据你的角色读取(或写入)每个资源最多的数据.因此,例如,用户可能能够在他们的个人资料上看到他们的私人电话号码,因此站点管理员也可以,但是另一个用户不会.匿名访问者可能无法看到其他用户的真实姓名,但其他用户(以及网站管理员)可以这样做.有大约4或5个访问级别以及关于可以读取或写入哪些属性的规则.写作我很满意,因为客户端可以PUT更改,服务器不一定全部接受它们(或根本不接受),但阅读是我的问题.

<user>
 <id>jimbob</id>
 <real-name>Jim Roberts</real-name> <!-- only logged-in users should see this -->
 <phone-number>+1 42424151</phone-number> <!-- only the user and admin users should see this -->
</user>
Run Code Online (Sandbox Code Playgroud)

我想拥有一个包含所有公共数据的可正常缓存的用户配置文件资源,但是如何为只有某些用户可以看到的所有内容建模?我最多可以获得4个额外信息链接,其中大多数会返回大多数用户的未经授权的错误,每个链接都包含与角色相关的额外信息.但这似乎非常低效,并且还将客户与角色概念联系起来,而之前他们需要知道的只是用户.还有更好的想法吗?

<user>
 <id>...</id>
 <link rel="more" href="extra-user-profile-data-for-logged-in-users"/>
 <link rel="more" href="extra-user-profile-data-for-senior-users"/>
 <link rel="more" href="extra-user-profile-data-for-admin-users"/>
 <link rel="more" href="extra-user-profile-data-for-superadmin-users"/>
</user>
Run Code Online (Sandbox Code Playgroud)

请注意 - 我没有与任何人挣扎

  • 认证
  • 资源级访问控制
  • 在服务器端实现访问控制或授权

我正在努力

  • 如何以真正的RESTful方式表示"正常"HTML网站中的资源与不同的人不同.

这似乎是每个人都应该拥有的一个非常普遍的问题,但我找不到任何东西!请帮忙!

security rest authorization access-control

12
推荐指数
1
解决办法
1831
查看次数

如何在Symfony2中使用AccessDecisionManager来授权任意用户?

我希望能够验证属性(角色)是否被授予UserInterface在Symfony2中实现的任何任意对象.这可能吗?

UserInterface->getRoles() 不适合我的需要,因为它不考虑角色层次结构,我宁愿不重新发明该部门的轮子,这就是为什么我想尽可能使用Access Decision Manager.

谢谢.

为了回应下面的Olivier解决方案,以下是我的经验:

您可以将security.context服务与isGranted方法一起使用.您可以传递第二个参数,它是您的对象.

$user = new Core\Model\User();
var_dump($user->getRoles(), $this->get('security.context')->isGranted('ROLE_ADMIN', $user));
Run Code Online (Sandbox Code Playgroud)

输出:

array (size=1)
  0 => string 'ROLE_USER' (length=9)

boolean true
Run Code Online (Sandbox Code Playgroud)

我的角色层次:

role_hierarchy:
    ROLE_USER:          ~
    ROLE_VERIFIED_USER: [ROLE_USER]
    ROLE_ADMIN:         [ROLE_VERIFIED_USER]
    ROLE_SUPERADMIN:    [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
    ROLE_ALLOWED_TO_SWITCH: ~
Run Code Online (Sandbox Code Playgroud)

我的UserInterface->getRoles()方法:

public function getRoles()
{
    $roles = [$this->isVerified() ? 'ROLE_VERIFIED_USER' : 'ROLE_USER'];

    /**
     * @var UserSecurityRole $userSecurityRole
     */
    foreach ($this->getUserSecurityRoles() as $userSecurityRole) {
        $roles[] = $userSecurityRole->getRole();
    }

    return $roles;
}
Run Code Online (Sandbox Code Playgroud)

ROLE_ADMIN必须明确分配,但即使用户刚刚创建并且尚未分配除默认值以外的任何角色,也会isGranted('ROLE_ADMIN', $user)返回,只要授予当前登录用户.这使我相信到第二个参数只是忽略的是,提供给被代替.TRUE …

php access-control symfony

12
推荐指数
2
解决办法
9226
查看次数

检测Windows Server 2008或更高版本上的提升权限

我有一个在Windows Server平台(2008或更高版本)上运行的C#,.Net 4.6.1 Windows窗体应用程序,它需要"以管理员身份运行".需要提升权限,因为应用程序更改了各种文件夹上的用户访问权限(如果重要,则在IIS默认网站根目录下).

我没有运气检测应用程序是否"以管理员身份运行".如果我正常启动应用程序(不是管理员),则使用以下代码

var isAdmin = WindowsIdentity.GetCurrent().Owner.IsWellKnown(WellKnownSidType.BuiltinAdministratorsSid);
Run Code Online (Sandbox Code Playgroud)

返回,true但更改目录上的某些用户访问权限的代码失败,权限不足错误.

如果我以管理员身份运行应用程序,则上面的检查也会返回true,但更改用户访问权限的工作正常.

我没有成功的其他尝试:

  • 使用GetTokenInformationadvapi32.dll中的方法,如此处所示
  • 添加一个清单文件到我设置应用requestedExecutionLevelrequireAdministrator

在此先感谢您的帮助.

c# privileges administrator access-control windows-server

12
推荐指数
1
解决办法
358
查看次数

用于散列8-16字节字符串的非常快速的散列函数

我需要一个非常快速的字符串散列函数,它非常适合用PHP编写的Web应用程序.

我想要克服的问题是为访问控制系统中的权限分配ID.我正在考虑使用散列字符串来表示权限ID.这样我就可以像这样检查权限:

if ($Auth->isAllowed($user, "blog.comment")) {
    // Do some operation
}
...

if ($Auth->isAllowed($user, "profile.avatar.change")) {
    // Do some other operation
}
Run Code Online (Sandbox Code Playgroud)

DB表将权限哈希映射到用户的角色.要检查是否允许用户执行"profile.avatar.change",将对数据库表进行哈希处理并检查相应的字符串.

这非常方便,无需担心在不同模块之间维护唯一的权限ID.但散列函数应该非常有效.

php string permissions hash access-control

12
推荐指数
1
解决办法
1676
查看次数

Hyperledger Fabric Composer - 限制系统管理员的访问权限

我的问题是关于hyperledger fabric composer中的访问控制.

假设您有一个业务网络,您可以在其中拥有以下参与者:

  1. 卖家
  2. (潜在)买家

卖方是向购买公司销售产品的公司的雇员.买方是购买公司的雇员.

示例:购买公司是戴姆勒.戴姆勒的三名员工在网络中注册为买家.销售公司是通用电气.通用电气的两名员工在网络中注册为卖家.

使用超级边缘作曲家的访问控制语言,可以随意限制买家和卖家的访问权限.

但是节点级别的访问控制情况如何?

不仅有买家和卖家,还有两名系统管理员:一名负责戴姆勒同行的系统管理员和一名负责通用电气同行的系统管理员.

默认情况下,系统管理员可以访问所有数据.也就是说,戴姆勒系统管理员可以访问注册的通用电气员工的所有数据.反之亦然,通用电气系统管理员可以访问注册戴姆勒员工的所有数据.

是否可以限制系统管理员对少数权限的访问,例如:

  1. 有权安装和启动业务网络
  2. 有权控制其他系统管理员对系统所做的更改(例如,如果戴姆勒系统管理员更改了应用程序的代码,那么通用电气管理员必须先批准这些更改才能生效)
  3. 阅读访问自己公司的员工

system-administration access-control peer hyperledger-fabric hyperledger-composer

12
推荐指数
1
解决办法
282
查看次数

c ++使用声明,范围和访问控制

通常,'using'声明用于将基本类的一些成员函数纳入范围,否则这些函数将被隐藏.从这个角度来看,它只是一种使可访问信息更便于使用的机制.
但是:'using'声明也可用于更改访问约束(不仅用于函数,还用于属性).例如:

class C{
public:
  int a;
  void g(){ cout << "C:g()\n"; }
  C() : a(0){}
};

class D : public C{
private:
  using C::a;
  using C::g;
public:
  D() { a = 1; }
};

int main(void){
  D d;
  cout << d.a << endl;  //error: a is inaccessible
  C *cp = &d;
  cout << cp->a << endl; //works
  d.g();  //error: g is inaccessible
  cp->g();  //works
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我认为派生类中的访问限制实际上没有用,因为你总是可以从指向基类的指针访问g()和a.那么至少应该有某种编译器警告吗?或者禁止衍生类的访问限制更好?使用声明不是添加约束以进行访问的唯一可能性.它也可以通过覆盖基类的函数并将其放在具有更多访问限制的部分中来完成.是否有一些合理的例子,以这种方式限制访问确实是不可取的?如果不是,我不明白为什么应该允许它.

还有一件事:至少使用g ++,相同的代码编译得很好而没有"使用"这个词.这意味着对于上面的例子:可以编写C :: a; 和C :: g; 而不是使用C :: a; 使用C …

c++ scope access-control using-declaration

11
推荐指数
1
解决办法
1万
查看次数

JAX-WS,身份验证和授权 - 如何?

在Web服务中进行身份验证和授权的最佳方法是什么?

我正在开发一组Web服务,需要基于角色的访问控制.使用metro - SOAP,简单的java而不使用EJB.

  • 我想使用用户名和密码对用户进行一次身份验证,以便与数据库进行匹配.在随后的电话中.
  • 我想使用某种会话管理.可以是在登录时检索到客户端的某个会话ID,以便在所有呼叫中显示.

至今:

  • 使用数据库读取身份验证 - 但我想要应用程序级别验证;
  • 使用jax-ws读取应用程序身份验证 - 但我不想每次都执行身份验证机制;

  • 我想我可以使用SOAP处理程序拦截所有消息,并使用消息附带的一些会话标识符令牌在hander中执行授权控制,该令牌可以与保存在数据库中的标识符匹配,登录Web方法.

编辑:

我还有一些问题:

  • 如何知道被调用的Web方法的名称?
  • 我应该使用什么样的令牌?
  • 如何在通话之间传递此令牌?

编辑2

因为@ ag112答案:

我正在使用Glassfish.

我使用WS-Policy和WS-Security来加密和签名消息.使用相互证书身份验证.我想在应用程序之间补充此消息级别的安全性,同时在消息级别对用户进行身份验证和授权.

我只是开发服务,我几乎不知道客户,只是他们可以用不同的语言创建.

在这一点上,我认为最重要的是做我需要做的事情来验证和验证用户,我是客户端应用程序最简单的实现方式.

java authentication web-services jax-ws access-control

11
推荐指数
1
解决办法
9974
查看次数

协议一致性的Swift访问控制

我有一个在文件中定义的私有协议,如下所示

private protocol testProtocol {
 func testFunc1()
 func testFunc2()
}
Run Code Online (Sandbox Code Playgroud)

公共类符合上述协议如下

 public class testClass : testProtocol {
 func testFunc1() {}
 func testFunc2() {}
}
Run Code Online (Sandbox Code Playgroud)

根据apples文档,默认情况下,公共类的成员获得内部访问控制,除非它明确设置为不同的访问控制修饰符.

该文档还说,类型与具有较低访问控制的协议的一致性将使该类型的协议访问控制的实现与协议的实现相同.在这种情况下,由于类型的访问控制是公共的,并且协议访问控制是私有的,因此方法testfunc1和testfunc2应该获得私有的访问控制.

当在不同的源文件中实例化类并且如下所示访问方法时,编译器不会显示不期望的错误,因为根据指南,方法应该是私有的

var test: testClass = testClass()
test.testFunc1()
Run Code Online (Sandbox Code Playgroud)

这是预期的行为吗?我错过了什么吗?

protocols access-control ios swift2

10
推荐指数
1
解决办法
5469
查看次数