一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Java

点击劫持漏洞:使用X-Frame-Options 解决方法(应用tomcat)

发现项目中存在 X-Frame-Options 低危漏洞: 使用 X-Frame-Options X-Frame-Options 有三个值: DENY 表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。 SAMEORIGIN 表示该页面可以在相同域名页面的 frame 中展示。 ALLOW-FROM uri 表示该页面可以在指定来源的 frame 中展示。   换一句话说,如果设置为 DENY,不光在别人的网站 frame 嵌入时会无法加载,在同域名页面中同样会无法加载。 另一方面,如果设置为 SAMEORIGIN,那么页面就可以在同域名页面的 frame 中嵌套。   配置 Apache 配置 Apache 在所有页面上发送 X-Frame-Options 响应头,需要把下面这行添加到 'site' 的配置中:

  配置 nginx 配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 'http', 'server' 或者 'location' 的配置中:

  配置 IIS 配置 IIS 发送 X-Frame-Options 响应头,添加下面的配置到 Web.config 文件中:

  配置 TOMCAT “点击劫持:X-Frame-Options未配置” 因为项目使用的是tomcat服务器,我们不可能在每个页面去添加:  

    因此我们使用过滤器,代码如下:  

  通过以下配置,好像就没有在扫描出来该漏洞信息。   你配不上自己的野心 也辜负了所受的苦难 from:https://www.cnblogs.com/wdnnccey/p/6476518.html

龙生   02 Jul 2019
View Details

Java Web项目漏洞:检测到目标URL存在http host头攻击漏洞解决办法

背景 项目上线之后使用绿盟或Acunetix安全扫描工具扫描后发现了头攻击漏洞。截图如下: 漏洞提示 检测工具在检测出漏洞后给予的提示为: 大意为不要使用request中的serverName,也就是说host header可能会在攻击时被篡改,依赖request的方法是不可靠的,形如JSP头部中的:

这样的使用方法就会被漏洞检测工具查出来,认定有头攻击漏洞。 解决办法 提示中说,如果是php的话不要用_SERVER[“HTTP_HOST”],apache和Nginx通过设置虚拟机来纪要非法header,而web开发中常见的运行容器就是tomcat,网络查找出的解决方案大多不适用,最后,我们找到了一个折中的办法。 主要解决办法,就是在请求拦截上面做host合法性校验,拦截掉非法请求。

上述代码是常见的web系统拦截器doFilter方法,我们在方法开始的地方做host判定,如果不在白名单内,则返回403状态码。漏洞工具收到403后认为访问请求已被终止,就不会报错了。 其中,ServerWhiteListUtil.isWhite(requestHost))方法:

配置项serverWhiteList.json文件(放置在src根目录或resource配置目录,根据项目框架来定):

  from:https://blog.csdn.net/ahuyangdong/article/details/79091699

龙生   02 Jul 2019
View Details

springboot+thymeleaf后端设置全局变量前端js接收

公司旧的项目用play,新的项目改用springboot,前端同学问我,新的项目怎么拿baseUrl? 其实springboot+thymeleaf是可以做到的,我就贴个代码记录一下吧 后端代码如下:

  只要放在spring能扫描到的地方就可以了. 不过这里有个问题,一般来说,这些地址都是通过properties文件,或者yml文件,分环境配置的,要拿配置文件的值,我第一时间就想用@value,但是由于加载顺序的关系,@value加载在后面,所以这里就不能用@value了,用environment

  然后到前端的代码: 把这段代码放到header.html,统一加载就行了

  from:https://blog.csdn.net/bear_lam/article/details/80278590

龙生   28 Jun 2019
View Details

SpringBoot2.x过后static下的静态资源无法访问

  from:https://blog.csdn.net/wenxingchen/article/details/84139845

龙生   28 Jun 2019
View Details

spring boot web程序将static public 资源文件放到jar外部

目录 spring boot程序的static目录默认资源路径源码 application.yml增加配置 spring boot程序的static目录默认资源路径源码

可以看到springboot默认加载资源的路径是在calsspath下,这样jar打包的web项目资源文件只能放在jar内。这样修改和维护起来非常不方便。 参考官方文档,static资源也可以放在jar包外部,只要在配置文件中增加static-locations: 就可以直接在配置文件中覆盖默认的静态资源路径的配置信息 application.yml增加配置

from:https://blog.csdn.net/u014155356/article/details/82862683

龙生   28 Jun 2019
View Details

Thymeleaf入门(一)——入门与基本概述

一、概述 1.是什么 简单说, Thymeleaf 是一个跟 Velocity、FreeMarker 类似的模板引擎,它可以完全替代 JSP 。 2.feature 1.Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。 2.Thymeleaf 开箱即用的特性。它提供标准和spring标准两种方言,可以直接套用模板实现JSTL、 OGNL表达式效果,避免每天套模板、该jstl、改标签的困扰。同时开发人员也可以扩展和创建自定义的方言。  3. Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。 3.文档 官方教程:http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#what-is-thymeleaf 推荐教程:http://blog.didispace.com/springbootweb/ http://blog.csdn.net/u012706811/article/details/52185345  二、HelloWorld 1.引入依赖 springboot直接引入:

非springboot项目使用如下依赖:

默认的模板映射路径是:src/main/resources/templates,springboot1.4之后,可以使用thymeleaf3来提高效率,并且解决标签闭合问题,配置方式:

之前的model/modelMap/modelAndView等页面数据传递参考之前随笔:点击查看   快速回顾:

  2.配置thymeleaf视图解析器 这点与springMVC是相类似的:

实际项目中可能会有不太严格的HTML格式,此时设置mode=HTML5将会对非严格的报错,可以参考以下配置:

<dependency>          <groupId>net.sourceforge.nekohtml</groupId>          <artifactId>nekohtml</artifactId>          <version>1.9.22</version>   </dependency>  

这样,需要的配置项如下:

// 完整配置项参考类ThymeleafProperties   3.编写控制器

  4.编写模板html

其中,注释是通过alt+enter进行自动生成的,便于IDEA补全,如果不加,IDEA将会报错cannot reslove。 当然也可以通过如下方式解决,解决之前推荐在maven项目中reimport一下!(据说新版本的IDEA中已经修复此问题,待更新至2017.3以后)   5.测试  三、基础语法 1.创建HTML 由上文也可以知道需要在html中添加:

这样,下文才能正确使用th:*形式的标签!   2.获取变量值${…} 通过${…}进行取值,这点和ONGL表达式语法一致!

  选择变量表达式*{…}

至于p里面的原有的值只是为了给前端开发时做展示用的.这样的话很好的做到了前后端分离。 这也是Thymeleaf非常好的一个特性:在无网络的情况下也能运行,也就是完全可以前端先写出页面,模拟数据展现效果,后端人员再拿此模板修改即可!   3.链接表达式: […]

龙生   26 Jun 2019
View Details

Druid 介绍及配置

1. Druid是什么? Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。 2. 在哪里下载druid 正式版本下载: maven中央仓库: http://central.maven.org/maven2/com/alibaba/druid/ 3. 怎么获取Druid的源码 Druid是一个开源项目,源码托管在github上,源代码仓库地址是 https://github.com/alibaba/druid。同时每次Druid发布正式版本和快照的时候,都会把源码打包,你可以从上面的下载地址中找到相关版本的源码 4. 怎么配置maven Druid 0.1.18 之后版本都发布到maven中央仓库中,所以你只需要在项目的pom.xml中加上dependency就可以了。例如:

  也可以选择 Maven仓库查找公共的仓库地址:http://www.mvnrepository.com/artifact/com.alibaba/druid 5. 怎么打开Druid的监控统计功能 Druid的监控统计功能是通过filter-chain扩展实现,如果你要打开监控统计功能,配置StatFilter,具体看这里:https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter   6. 怎样使用Druid的内置监控页面 内置监控页面是一个Servlet,具体配置看这里:https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatViewServlet%E9%85%8D%E7%BD%AE   7. 内置监控中的Web和Spring关联监控怎么配置? Web关联监控配置 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_%E9%85%8D%E7%BD%AEWebStatFilter Spring关联监控配置 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_Druid%E5%92%8CSpring%E5%85%B3%E8%81%94%E7%9B%91%E6%8E%A7%E9%85%8D%E7%BD%AE   8. 怎么配置防御SQL注入攻击 Druid提供了WallFilter,它是基于SQL语义分析来实现防御SQL注入攻击的。具体配置看这里:https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE-wallfilter   9. Druid有没有参考配置 不同的业务场景需求不同,你可以使用我们的参考配置,但建议你仔细阅读相关文档,了解清楚之后做定制配置。https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_DruidDataSource%E5%8F%82%E8%80%83%E9%85%8D%E7%BD%AE   10. 我想日志记录JDBC执行的SQL,如何配置 Druid提供了Log4jFilter、CommonsLogFilter和Slf4jFilter,具体配置看这里https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_LogFilter   11. 我的程序可能产生连接泄漏了,有什么办法? Druid提供了多种监测连接泄漏的手段,具体看这里:https://github.com/alibaba/druid/wiki/%E8%BF%9E%E6%8E%A5%E6%B3%84%E6%BC%8F%E7%9B%91%E6%B5%8B   12. 在Druid中使用PSCache会有内存占用过大问题么? 连接Oracle数据库,打开PSCache,在其他的数据库连接池都会存在内存占用过多的问题,Druid是唯一解决这个问题的连接池。具体看这里:https://github.com/alibaba/druid/wiki/Oracle%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%8BPreparedStatementCache%E5%86%85%E5%AD%98%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88   13. 有没有和其他数据库连接池的对比? 各种数据库连接池对比https://github.com/alibaba/druid/wiki/%E5%90%84%E7%A7%8D%E6%95%B0%E6%8D%AE%E5%BA%93%E8%BF%9E%E6%8E%A5%E6%B1%A0%E5%AF%B9%E6%AF%94 14. 从其他连接池迁移要注意什么? 不同连接池的参数参照对比: http://code.alibabatech.com/wiki/pages/viewpage.action?pageId=6947005 DBCP迁移 https://github.com/alibaba/druid/wiki/DBCP%E8%BF%81%E7%A7%BB   15. Druid中有没有类似Jboss DataSource中的ExceptionSorter ExceptionSorter是JBoss DataSource中的优秀特性,Druid也有一样功能的ExceptionSorter,但不用手动配置,自动识别生效的。具体看这里:https://github.com/alibaba/druid/wiki/ExceptionSorter_cn   16. Druid中的maxIdle为什么是没用的? maxIdle是Druid为了方便DBCP用户迁移而增加的,maxIdle是一个混乱的概念。连接池只应该有maxPoolSize和minPoolSize,druid只保留了maxActive和minIdle,分别相当于maxPoolSize和minPoolSize。   17. 我的应用配置的是JNDI数据源,可以用DruidDataSource么? DruidDataSource支持JNDI配置,具体看这里:https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_JNDI_Tomcat 具体实现的类是这个:com.alibaba.druid.pool.DruidDataSourceFactory,你可以阅读代码加深理解。   18. 我的应用已使用DBCP,是代码中写死的,怎样更换为Druid? 可以的,Druid提供了一个中完全平滑迁移DBCP的办法。 1) 从http://repo1.maven.org/maven2/com/alibaba/druid/druid-wrapper/ 下载druid-wrapper-xxx.jar 2) 加入druid-xxx.jar 3) 从你的WEB-INF/lib/中删除dbcp-xxx.jar 4) 按需要加上配置,比如JVM启动参数加上-Ddruid.filters=stat,动态配置druid的filters […]

龙生   26 Jun 2019
View Details

修改thymeleaf模板默认路径

thymeleaf的模板默认路径是resources的templates,我想把模板放到webapp下,然后就弄了半天,最后终于发现问题了(想饿自己三天不吃饭~),记录一下这次惨痛的教训😂 springboot使用thymeleaf在pom文件中引包,然后修改项目结构,修改yml配置就ok了 pom文件中引包 org.springframework.boot spring-boot-starter-thymeleaf 修改项目结构 最后点击ok然后去设置yml文件   from:https://blog.csdn.net/zhaocongc/article/details/87183872

龙生   26 Jun 2019
View Details

springboot通过static-locations实现静态资源访问

由于我们的接口是通过springboot一键式打包成jar包发布到服务器的,因此在通过接口上传文件之后,客户端如果还需要再访问该文件,那就需要用到静态资源访问,spring配置如下:

一个是widows下做测试使用,另一个是linux下测试服务器使用。 有时候你会发现可能配置了static-locations但无效,原因可能就是你的目录不对,请仔细检查一下,别问我怎么知道的 如此之后验证即可,如我的: 浏览器输入: localhost:9999/filename ——————— 作者:weixin_34387284 来源:CSDN 原文:https://blog.csdn.net/weixin_34387284/article/details/87066649 版权声明:本文为博主原创文章,转载请附上博文链接!

龙生   20 Jun 2019
View Details

MyBatis实现SaveOrUpdate

注意如果insert的parameterType是自定义对象的话,对象里需要有count属性,否则会报count属性找不到的错误   from:https://ydlmlh.iteye.com/blog/2236671

龙生   18 Jun 2019
View Details
1 42 43 44 62