首页 文章 精选 留言 我的

精选列表

搜索[数据库插件],共10028篇文章
优秀的个人博客,低调大师

Spring Boot XSS 攻击过滤插件使用

XSS 是什么 XSS(Cross Site Scripting)攻击全称跨站脚本攻击,为了不与 CSS(Cascading Style Sheets)名词混淆,故将跨站脚本攻击简称为 XSS,XSS 是一种常见 web 安全漏洞,它允许恶意代码植入到提供给其它用户使用的页面中。 xss 攻击流程 简单 xss 攻击示例 若网站某个表单没做相关的处理,用户提交相关恶意代码,浏览器会执行相关的代码。 解决方案 XSS 过滤说明 对表单绑定的字符串类型进行 xss 处理。 对 json 字符串数据进行 xss 处理。 提供路由和控制器方法级别的放行规则。 使用 mica-xss 引入一下 依赖即可 <!--XSS 安全过滤--> <dependency> <groupId>net.dreamlu</groupId> <artifactId>mica-core</artifactId> <version>2.0.9-GA</version> </dependency> <dependency> <groupId>net.dreamlu</groupId> <artifactId>mica-xss</artifactId> <version>2.0.9-GA</version> </dependency> 测试 XSS 过滤 测试 GET 参数过滤 创建目标接口,模拟 get 提交 @GetMapping("/xss") public String xss(String params){ return params; } 返回为空 ⋊> ~ curl --location --request GET 'http://localhost:8080/xss?params=%3Cscript%3Ealert(%27xxx%27)%3C/script%3E' 测试 POST form 参数过滤 创建目标接口,模拟 post form 提交 @PostMapping("/xss") public String xss(String params){ return params; } 返回为空 curl --location --request POST 'http://localhost:8080/xss' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'params=<script>alert('\''xxx'\'')</script>' 测试 POST body 参数过滤 创建目标接口,模拟 post body 提交 @PostMapping("/xss") public String xss(@RequestBody Map<String,String> body){ return body.get("params"); } 返回为空 curl --location --request POST 'http://localhost:8080/xss' \ --header 'Content-Type: application/json' \ --data-raw '{ "params":"<script>alert('\''XXX'\'')</script>" }' 跳过某些接口过滤 可以使用 @XssCleanIgnore 注解对方法和类级别进行忽略。 @XssCleanIgnore @PostMapping("/xss") public String xss(@RequestBody Map<String,String> body){ return body.get("params"); } 原理分析 常见实现剖析 目前网上大多数的方案如下图,新增 XssFilter 拦截用户提交的参数,进行相关的转义和黑名单排除,完成相关的业务逻辑。在整个过程中最核心的是通过包装用户的原始请求,创建新的 requestwrapper 保证请求流在后边的流程可以重复读。 <img src="https://i.loli.net/2020/12/01/DN4XUGi1rxSRath.png" style="zoom:67%;" /> mica-xss 实现 1. 自定义 WebDataBinder 编辑器支持 form 过滤 Spring WebDataBinder 的作用是从 web request 中把 web 请求里的parameters绑定到对应的JavaBean上,在 Controller 方法中的参数类型可以是基本类型,也可以是封装后的普通 Java 类型。若这个普通的 Java 类型没有声明任何注解,则意味着它的每一个属性都需要到 Request 中去查找对应的请求参数,而 WebDataBinder 则可以帮助我们实现从 Request 中取出请求参数并绑定到 JavaBean 中。 SpringMVC 在绑定的过程中提供了用户自定义编辑绑定的接口,注入即可在参数绑定 JavaBean 过程中执行过滤。 2. 自定义 JsonDeserializer 反序列化支持 Json 过滤 在 Spring Boot 中默认是使用 Jackson 进行序列化和反序列化 JSON 数据的,那么除了可以用默认的之外,我们也可以编写自己的 JsonSerializer 和 JsonDeserializer 类,来进行自定义操作。用户提交 JSON 报文会通过 Jackson 的 JsonDeserializer 绑定到 JavaBean 中。我们只需要自定义 JsonDeserializer 即可完成在绑定 JavaBean 中执行过滤。 核心过滤逻辑 在 mica-xss 中并未采取上文所述通过自己手写黑名单或者转义方式的实现方案,而是直接实现 Jsoup 这个工具类。 jsoup 实现 WHATWG HTML5 规范,并将 HTML 解析为与现代浏览器相同的 DOM。 从 URL,文件或字符串中刮取和解析 HTML 使用 DOM 遍历或 CSS 选择器查找和提取数据 操纵 HTML 元素,属性和文本 清除用户提交的内容以防止安全白名单,以防止 XSS 攻击 输出整洁的 HTML 项目推荐: Spring Cloud 、Spring Security OAuth2的RBAC权限管理系统 欢迎关注

优秀的个人博客,低调大师

【开发】IDEA这款插件太实用了…

云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 接口调试是每个软件开发从业者必不可少的一项技能,一个项目的的完成,可能接口测试调试的时间比真正开发写代码的时间还要多,几乎是每个开发的日常工作项。 所谓工欲善其事必先利其器,在没有尝到IDEA REST真香之前,postman确实是一个非常不错的选择,具有完备的REST Client功能和请求历史记录功能。 但是当使用了IDEA REST之后,postman就可以丢了,因为,IDEA REST Client具有postman的所有功能,而且还有postman没有的功能,继续往下看。 真香定律的原因有如下几个: 1、首先postman的所有功能IDEA REST Client都具备了,如REST Client控制台和历史请求记录。 2、其次如果能够在一个生产工具里完成开发和调试的事情,干嘛要切换到另一个工具呢?在公众号互联网架构师后台回复:2T,可以获取架构师视频整套系统教程。 3、然后IDEA REST Client还支持环境配置区分的功能,以及接口响应断言和脚本化处理的能力。 4、IDEA REST Client的请求配置可以用文件配置描述,所以可以跟随项目和项目成员共享。 IDEA REST Client控制台 从顶层工具栏依次Tools -> HTTP Client -> Test RESTFUL Web Service 打开后,IDEA REST Client控制台的界面如下样式: 可以看到,这个控制台展示的功能区和postman已经没什么差别了,包括请求方式,请求参数和请求头的填充都已经包含了。在公众号互联网架构师后台回复:2T,可以获取架构师视频整套系统教程。 特别说明下的是,如果请求的方式是Authorization :Basic这种方式认证的话,可以点击下图所示的按钮,会弹出填充用户名和密码的窗口出来,填完后会自动补充到Authorization 的header里面去 历史请求记录 IntelliJIDEA自动将最近执行的50个请求保存到http-requests-log.http 文件中,该文件存储在项目的.idea / httpRequests / 目录下。 使用请求历史记录,您可以快速导航到特定响应并再次发出请求。文件内容大如下图所示,再次发出请求只要点击那个运行按钮即可。 如果从请求历史记录再次发出请求,则其执行信息和响应输出的链接将添加到请求历史记录文件的顶部。在公众号互联网架构师后台回复:2T,可以获取架构师视频整套系统教程。 构建HTTP请求脚本 上面的历史记录就是一个完整的IDEA REST Client请求脚本,如果你是从控制台触发的,那么可以直接复制历史请求记录的文件放到项目里作为HTTP请求的脚本,给其他成员共享,如果不是,也可以直接新建一个.http或者.rest结尾的文件,IDEA会自动识别为HTTP请求脚本。 语法部分 首先通过###三个井号键来分开每个请求体,然后请求url和header参数是紧紧挨着的,请求参数不管是POST的body传参还是GET的parameter传参,都是要换行的。 另外,大家可以关注微信公众号“互联网架构师”,在后台回复:2T,可以获取架构师全套视频。 环境区分 细心的你可能发现了上面示例的代码,没有真实的请求地址,取而代之的,是一个{{baseUrl}}的占位符,这个就是IDEA REST Client真香的地方,支持从指定的配置文件中获取到环境相关的配置参数,不仅baseUrl可以通过占位符替换,一些请求的参数如果和接口环境相关的都可以通过配置文件来区分。 首先在.http的脚本同目录下创建一个名为http-client.private.env.json的文件,然后内容如下,一级的key值时用来区分环境的,比如,dev、uat、pro等,环境下的对象就是一次HTTP请求中能够获取到的环境变量了,在公众号互联网架构师后台回复:2T,可以获取架构师视频整套系统教程。你可以直接在请求的HTTP的脚本中通过{{xx}}占位符的方式获取到这里配置的参数: 那么在选择执行请求的时候,IDEA就会让你选执行那个环境的配置,如: 结果断言 IDEA REST Client可以针对接口的响应值进行脚本化的断言处理,立马从一个接口调试工具上升到测试工具了,比如:在公众号互联网架构师后台回复:2T,可以获取架构师视频整套系统教程。 结果值暂存到环境变量 试想下这样的场景,当一个系统需要通过认证才能访问的时候,如果用postman的时候,是不是先访问登录接口,然后获得token后,手动粘贴复制到新的调试接口的header参数里面去,这太麻烦了,IDEA REST Client还有一个真香的功能,可以完美解决这个问题,请看下面的脚本:在公众号互联网架构师后台回复:2T,可以获取架构师视频整套系统教程。 在第一个认证的请求结束后,可以在response里拿到返回的token信息,然后我们通过脚本设置到了全局变量里,那么在接下来的接口请求中,就可以直接使用双大括号占位符的方式获取到这个token了 结语 postman有口皆碑,确实是一个非常不错的必备工具,之前给比人推荐这种工具时总是安利他postman。 但是,IDEA REST Client也真的很不错,值得尝试一下,后面安利这种工具就切换到IDEA REST Client了,postman反正被我丢掉了。 和第三方做接口对接时,项目里必备一个rest-http.http接口请求文件,满足自己的同时也成方便了他人。 【云栖号在线课堂】每天都有产品技术专家分享!课程地址:https://yqh.aliyun.com/zhibo 立即加入社群,与专家面对面,及时了解课程最新动态!【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK 原文发布时间:2020-03-20本文作者:互联网架构师本文来自:“互联网架构师 公众号”,了解相关信息可以关注“[互联网架构师](https://mp.weixin.qq.com/s/CVbglYeqO7DAnMcWyNuPiA) ”

优秀的个人博客,低调大师

vim关于python的自动补全插件

一、克隆代码mkdir -p ~/.vim/toolscd ~/.vim/toolsgit clone https://github.com/rkulla/pydiction.git二、配置Pydiction - UNIX/LINUX/OSX: Put python_pydiction.vim in ~/.vim/after/ftplugin/ - WINDOWS: Put python_pydiction.vim in C:vimvimfilesftplugin\ Assuming you installed Vim to C:vim\ cp -r ~/.vim/tools/pydiction/after/ ~/.vim三、编辑.vimrc文件vim ~/.vimrc在.vimrc文件添加如下配置:filetype plugin onlet g:pydiction_location = '~/.vim/tools/pydiction/complete-dict'let g:pydiction_menu_height = 3四、重启

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册