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