Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 保护Solr中的更新和删除查询_Apache_Security_Solr - Fatal编程技术网

Apache 保护Solr中的更新和删除查询

Apache 保护Solr中的更新和删除查询,apache,security,solr,Apache,Security,Solr,我有一个网站,使用Solr显示产品信息,并通过URL进行管理。我很好奇如何阻止普通用户通过URL更新或删除我的ApacheSolr文档。我想得到它,这样只有管理员才能提交这些查询 我假设有一种方法可以让用户名和密码验证任意用户是否是管理员,从而允许URL请求修改数据。这很有用,但问题是,如果有人在URL中输入查询,我甚至不希望来自网站UI的用户有机会看到登录消息 有人知道这方面的解决方案吗?向最终用户公开所有SOLR端点就像向用户打开数据库一样。我们有类似的需求,我们通过应用程序从最终用户那里复

我有一个网站,使用Solr显示产品信息,并通过URL进行管理。我很好奇如何阻止普通用户通过URL更新或删除我的ApacheSolr文档。我想得到它,这样只有管理员才能提交这些查询

我假设有一种方法可以让用户名和密码验证任意用户是否是管理员,从而允许URL请求修改数据。这很有用,但问题是,如果有人在URL中输入查询,我甚至不希望来自网站UI的用户有机会看到登录消息


有人知道这方面的解决方案吗?

向最终用户公开所有SOLR端点就像向用户打开数据库一样。我们有类似的需求,我们通过应用程序从最终用户那里复制SOLR

搜索仍然由SOLR提供支持,但所有请求和响应都是通过应用程序代理/转换的

这有助于我们在应用层执行所有基于角色的授权,SOLR不需要知道用户角色


因此,您的网站可以控制哪些操作需要授权,维护已登录用户的会话等。

向最终用户公开所有SOLR端点就像向用户打开数据库一样。我们有类似的需求,我们通过应用程序从最终用户那里复制SOLR

搜索仍然由SOLR提供支持,但所有请求和响应都是通过应用程序代理/转换的

这有助于我们在应用层执行所有基于角色的授权,SOLR不需要知道用户角色

因此,您的网站可以控制哪些操作需要授权,维护已登录用户的会话等。

1)一个解决方案是在不同的端口(例如8081)上运行SOLR,并让您的操作系统防火墙阻止对端口8081的请求,不包括您将用于管理管理员的计算机的公共IP,只允许本地计算机访问8081

这是我在CentOS机器上的IPTABLES中使用的防火墙配置

-输入端-p tcp--dport8081-s111.222.333.444-j接受

-一个输入-p tcp-m tcp--dport 8081-j DROP

为了进一步保护管理员,我使用摘要身份验证方法向web.xml添加了以下安全约束

<security-constraint> 
    <web-resource-collection> 
        <web-resource-name>Admin</web-resource-name> 
        <url-pattern>/admin/*</url-pattern> 
        <url-pattern>/admin.html</url-pattern>
    </web-resource-collection>
    <auth-constraint> 
        <role-name>admin</role-name> 
    </auth-constraint>
</security-constraint> 

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Admin images</web-resource-name>
        <url-pattern>*.png</url-pattern>
    </web-resource-collection>
    <auth-contraint>
        <role-name>admin</role-name>
    </auth-contraint>
</security-constraint>

<login-config>
    <auth-method>DIGEST</auth-method>
    <realm-name>secure</realm-name>
</login-config>

管理
/管理员/*
/admin.html
管理
管理员图像
*.png
管理
消化
保护

2) 另一种选择是只为两个不同的角色(即用户和管理员)添加上述安全约束。具有用户角色的用户将能够仅访问select url模式,而具有管理员角色的用户将能够访问admin url模式

我建议使用摘要身份验证,因为攻击者很容易伪造基本身份验证

1)一种解决方案是在不同的端口(比如8081)上运行SOLR,并让您的操作系统防火墙阻止对端口8081的请求,不包括您将用于管理管理员的机器的公共IP,只允许您的本地机器访问8081

这是我在CentOS机器上的IPTABLES中使用的防火墙配置

-输入端-p tcp--dport8081-s111.222.333.444-j接受

-一个输入-p tcp-m tcp--dport 8081-j DROP

为了进一步保护管理员,我使用摘要身份验证方法向web.xml添加了以下安全约束

<security-constraint> 
    <web-resource-collection> 
        <web-resource-name>Admin</web-resource-name> 
        <url-pattern>/admin/*</url-pattern> 
        <url-pattern>/admin.html</url-pattern>
    </web-resource-collection>
    <auth-constraint> 
        <role-name>admin</role-name> 
    </auth-constraint>
</security-constraint> 

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Admin images</web-resource-name>
        <url-pattern>*.png</url-pattern>
    </web-resource-collection>
    <auth-contraint>
        <role-name>admin</role-name>
    </auth-contraint>
</security-constraint>

<login-config>
    <auth-method>DIGEST</auth-method>
    <realm-name>secure</realm-name>
</login-config>

管理
/管理员/*
/admin.html
管理
管理员图像
*.png
管理
消化
保护

2) 另一种选择是只为两个不同的角色(即用户和管理员)添加上述安全约束。具有用户角色的用户将能够仅访问select url模式,而具有管理员角色的用户将能够访问admin url模式

我建议使用摘要身份验证,因为攻击者很容易伪造基本身份验证