0
点赞
收藏
分享

微信扫一扫

【BugBounty】记一次XSS绕过

罗子僧 2023-10-12 阅读 50
apachesolr

Apache Solr


简介

Solr是Apache的顶级开源项目,使用java开发 ,基于Lucene的全文检索服务器。 Solr比Lucene提供了更多的查询语句,而且它可扩展、可配置,同时它对Lucene的性能进行了优化。

安装

  • 下载 : 下载地址
  • 解压 : tar -zxvf solr-9.3.0.tgz -C .
  • 修改solr启动参数,取消健康检查,否则启动会报警告
  • cd /opt/solr/solr-9.3.0/bin/
  • vim solr.in.sh
  • 修改内容 SOLR_ULIMIT_CHECKS=false

启动

solr不推荐使用root账户启动,这点与es也相同,当然可以直接用-force参数,强制启动

./solr start -force

如果需要修改端口,可以通过-p参数指定

./solr start -p 8089 -force

启动成功可以看到日志打印

➜  bin  ./solr start -force
Waiting up to 180 seconds to see Solr running on port 8983 [|]
Started Solr server on port 8983 (pid=3786). Happy searching!

➜  bin

访问服务器ip:8983,可查看到solr管理界面

http://localhost:8983/solr/#/

image-20231008135750351

主要概念

core

doc

Schema

分词

倒排索引

image-20231008153853300

image-20231008153946605

创建Core

PS D:\Apache\solr-9.3.0\solr-9.3.0\bin> .\solr.cmd create -c core_test1
WARNING: Using _default configset with data driven schema functionality. NOT RECOMMENDED for production use.
         To turn off: bin\solr config -c core_test1 -p 8983 -action set-user-property -property update.autoCreateFields -value false

Created new core 'core_test1'
PS D:\Apache\solr-9.3.0\solr-9.3.0\bin>

image-20231008160446521

配置solr字段

添加字段有2种方法,可以通过web页面添加,也可以直接修改schema文件添加。

属性说明取值默认值
stored是否存储,一个字段是否被存储,取决于你是否想在solr的查询结果中得到它,也就是说你是否想在查询结果中看到它,它将会消耗cpu和io和磁盘空间等资源。true/falsetrue
indexed字段是否创建索引,索引的字段是在搜索的时候可以用它来查询或排序,在lucene中,被索引的字段将会建立倒排表。true/falsetrue
uninvertible如果为 true,则表示一个 indexed=“true” docValues=“false” 字段在查询时可以用“un-inverted”构建大内存数据结构以代替 DocValues。 出于历史原因,默认为 true,但强烈建议用户将其设置 false 以保持稳定性,并据需要使用 docValues=“true”。true/falsetrue
docValues字段的值是否放在面向列的 DocValues 结构中true/falsefalse
multiValued设置为true表示此字段可以存储多个值,意思是这个字段在一个文档中可以存储多个值的内容。true/falsefalse
required是否必须。如果为 true,则 Solr 拒绝任何添加没有此字段的文档。true/falsefalse
default字段的默认值,经常用在字段是必须的,但是有时候又无法提供的情况,solr就会用默认值替代。如: <field name="recordTime" type="date" indexed="true" stored="true" required="true" default="NOW+8HOUR"/> 标示recordTime如果没有提供,用当前的时间+8个小时作为recordTime的时间,加8小时是因为solr默认时区是0时区,按照中国北京时间(东8区)算,需要加上8个小时。

修改managed-schema
在core的conf下的managed-schema文件中增加字段配置

<!-- 自定义的字段,id已经存在不需要设置 -->
<field name="dd" type="string" indexed="true" stored="true"/>    
<field name="age" type="pint" indexed="true" stored="true" />
<field name="description" type="text_ik" indexed="true" stored="true"  />
<field name="createTime" type="pdate" indexed="true" stored="true"  />
<field name="updateTime" type="pdate" indexed="true" stored="true"  />

image-20231009120858922

添加后到“Core Admin”中刷新一下核即可

添加数据

现在core已经建好了,但是里面还没有数据,这里我们使用json添加以便快速演示(支持 JSON,、CSV、XML等格式),一般生产环境下都是从数据库访问。

准备json数据:

{"id": "11","age": 40,"name": "李白","description": "创造了古代浪漫主义文学高峰、歌行体和七绝达到后人难及的高度"},
{"id": "12","age": 31,"name": "杜甫","description": "唐代伟大的现实主义文学作家,唐诗思想艺术的集大成者"}

找到该core的Documents菜单,选择文档类型未JSON,把刚才准备的数据粘贴进来,确认无误提交
image-20231009121159645

查询

现在验证一下查询一下
image-20231009121159645

安装中文分词器

下载地址

将ik-analyzer-8.5.0.jar放入solr目录下

存放于 *solr-9.1.0\server\solr-webapp\webapp\WEB-INF\lib* 目录下

编辑 D:\Apache\solr-9.3.0\solr-9.3.0\server\solr\core_test1\conf\managed-schema.xml

image-20231008160151468

查询

到core的分词菜单中验证一下description字段是否按中文分词了,可以看到一件按照中文的分词习惯进行了分词。
image-20231009121531760

举报

相关推荐

0 条评论