javaEE安全开发 SQL预编译 Filter过滤器 Listener 监听器 访问控制
前言
java开发和其他开发的不同并且更安全就是因为他拥有简单的预编译机制 filter 过滤器 和 listener 监听器


这个很重要 就是 web应用监听器和过滤器是在 Servlet 之前的并且 我们的请求和响应都需要经过 两者的同意才可以通过 缺一不可 、
Listener
安全方面 监听器的主要作用就是 内存马的使用(内存马和普通的木马的根本区别就是 难杀 他是在内存的程序 而不是一个单一的文件 可以理解为普通的木马就是 一个文件 而内存马就是可以一直生成文件的一个程序 )
这个的路由问题是 过滤器都有特定的路由地址 但是监听器没有 监听器类似于 js事件有事件就会触发
Filter
过滤器是非常重要的一个功能 他就相当于安全狗 会指定一些过滤
Filter的部署

为了方便先创建 两个文件应用程序
没装备 过滤器时
package servlet;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;import static java.lang.System.out;public class XianShi extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// super.doGet(req, resp);String code =req.getParameter("code");//传统的fileter 写法 :if(code==null){out.println("请输入正确的值");}// 过滤器的创建req.setCharacterEncoding("utf-8");resp.setContentType("text/html");PrintWriter out = resp.getWriter();out.println("code"+code);out.flush();out.close();}
}

web入口配置路由或者是直接 在当前页面上写入 @Webservlet("/xxxx") 进行配置路由
访问code并输入Xss参数 就会出现 弹窗

那就可以使用filter进行阻断 (过滤器其实就是放行器只有 我们的输入是满足条件的才会进行放行)
新建一个Xss文件
创建类时使用
implements Filter
进行调用接口 然后 使用接口的三个类
因为Fileter的进行是在Servlet之前的
配置路由
@WebFilter("/code")
这个是和 servlet是一致的 可千万别写为 WebServlet 这样就会造成服务的冲突
另外路由
在web.xml 中配置<filter><filter-name>Xss</filter-name><filter-class>filter.Xss</filter-class></filter><filter-mapping><filter-name>Xss</filter-name><url-pattern>/code</url-pattern></filter-mapping>
有Filter之后
package filter;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
@WebFilter("/code")
public class Xss implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {
// Filter.super.init(filterConfig);System.out.println("Xss init");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest qingqiu = (HttpServletRequest) servletRequest; //先接受get的值String code = qingqiu.getParameter("code"); //获取参数if (!code.contains("<>")) { // 判断内容filterChain.doFilter(servletRequest, servletResponse); //把请求和响应放出}else {System.out.println("Xss code");}}@Overridepublic void destroy() {
// Filter.super.destroy();System.out.println("Xss destroy");}
}
运行一下是不会触发的
简单Filter的内存马
filter内存马杀不死的原因就是因为他不是severlet层的 而是上一层的
哥斯拉生成一个木马

注意这个webapp才是应用程序
直接访问 哥斯拉连接

使用filter 可以进行删除过滤
监听器的部署
主要的用途就是记录访问的客流量等记录的功能
应用程序
package Linsten;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/cs")
public class Cs extends HttpServlet {@Overridepublic void init() throws ServletException {System.out.println("init");}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// System.out.println("doGet");System.out.println("Servlet里面创建Session");//创建Sessionreq.getSession();//使用linsten 当}
}
监听器
package Linsten;import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;public class CL implements HttpSessionListener {public void sessionCreated(HttpSessionEvent se) {System.out.println("Session created");}
}

SQl语句的预编译的调用
JDBC篇

先在 news 这个表里 加数据 2,3 条
不使用预编译使用拼接模式
import javax.servlet.http.HttpServlet;
import java.sql.*;
import java.util.Scanner;public class Select extends HttpServlet {public static void main(String[] args) throws ClassNotFoundException, SQLException {Scanner id1 = new Scanner(System.in);System.out.println("请输入你要查询的id");String name = id1.nextLine();System.out.println(name);//注册 驱动Class.forName("com.mysql.jdbc.Driver");// 建立数据库连接String url = "jdbc:mysql://localhost:3306/demo01";Connection con = DriverManager.getConnection(url,"root","123456");String sql = "select * from news where id="+name; // 拼接式的语句// 创建statementStatement huihua = con.createStatement();ResultSet jieguo=huihua.executeQuery(sql);// 结果的遍历//while(jieguo.next()){String id=jieguo.getString("id");System.out.println(id);String title=jieguo.getString("page_title");System.out.println(title);String author=jieguo.getString("heading");System.out.println(author);String content=jieguo.getString("content");System.out.println(content);}}
}

可以被随意的sql注入
使用预编译
只需把我们的statement会话改为 preparedstatement 会话就行 执行预编译
//使用预编译写法String sql1="select * from news where id=?";PreparedStatement preparedStatement=lianejie.prepareStatement();preparedStatement.setString(1,s);ResultSet jieguo=preparedStatement.executeQuery();
预编译的原理就是使用固定的逻辑 ? 来防止多余的字段的注入或者其他逻辑的干扰
相关文章:
javaEE安全开发 SQL预编译 Filter过滤器 Listener 监听器 访问控制
前言 java开发和其他开发的不同并且更安全就是因为他拥有简单的预编译机制 filter 过滤器 和 listener 监听器 这个很重要 就是 web应用监听器和过滤器是在 Servlet 之前的并且 我们的请求和响应都需要经过 两者的同意才可以通过 缺一不可 、 Listener 安全方面 监听器…...
一体机cell服务器更换内存步骤
一体机cell服务器更换内存步骤: #1、确认grdidisk状态 cellcli -e list griddisk attribute name,asmmodestatus,asmdeactivationoutcome #2、offline griddisk cellcli -e alter griddisk all inactive #3、确认全部offline后进行关机操作 shutdown -h now #4、开…...
Hadoop•用Web UI查看Hadoop状态词频统计
听说这里是目录哦 通过Web UI查看Hadoop运行状态🐇一、关闭防火墙二、在物理计算机添加集群的IP映射三、启动集群四、进入HDFS的Web UI 词频统计🦩1、准备文本数据2、在HDFS创建目录3、上传文件4、查看文件是否上传成功5、运行MapReduce程序6、查看MapRe…...
rhel7.9利用有网络环境打包ansible
RHEL7.9激活(可省略) # 注册 subscription-manager register --usernameyour_username --passwordyour_password --auto-attach # 查看订阅状态 subscription-manager list # 将 “enabled1” 改为 “enabled0” vi /etc/yum/pluginconf.d/subscription-manager.conf 配置阿…...
vim文本编辑器三种模式的转换关系
输入模式 ———— 末行模式 输入模式和末行模式不能相互转换。 输入模式 ———— 命令模式 输入模式可以通过点击esc进入命令模式。 命令模式可以通过点击i进入输入模式。 末行模式 ———— 命令模式 末行模式可以通过点击esc进入命令模式。 命令模式可以通过shift&…...
深度学习:大模型Decoding+MindSpore NLP分布式推理详解
大模型推理流程 1. 用户输入提示词(Prompt) 假设用户输入为:“从前,有一只小猫,它喜欢……” 我们的目标是让模型生成一段完整的故事。 2. 模型处理用户输入 2.1 分词:输入提示被分词为模型可以理解的…...
【JVM中的三色标记法是什么?】
JVM中的三色标记法是什么? 一、基本概念二、标记过程三、优势与问题四、漏标与多标的解决方案三色标记法(Tri-color Marking Algorithm)是Java虚拟机(JVM)中一种用于追踪对象存活状态的垃圾回收算法。 它基于William D. Hana和Mark S. McCulleghan在1976年提出的两色标记法…...
数据库服务体系结构
1. 数据库服务应用配置 服务进行配置有什么作用? 实现服务运行启动 实现某些功能 应用配置有三种方式? 利用编译安装进行配置 编写配置文件信息 ,.默认的配置文件: /etc/my.cnf 利用启动命令参数配置信息,mysqld_safe --skip-grant-tables --…...
vscode项目依赖问题
必读 一定要将前端下拉的项目备份一下,很容易运行导致依赖报错,重新下载 命令 使用幽灵分解器安装 pnpm install 替代 npm install 设置淘宝NPM镜像源 yarn config set registry https://registry.npmmirror.com 查看目前依赖包的版本 npm list ant-d…...
R数据分析:有调节的中介与有中介的调节的整体介绍
单独的有调节的中介或者有中介的调节好多同学还大概能看明白,但是两个东西一起说我发现大部分同学就懵逼了。今天我就尝试将两种方法一起讲讲,重点帮助大家厘清两种方法的异同。 先从整体上看下两者的概念: 有中介的调节首先落脚在调节,调节作用必须是显著的,并且这个调…...
RabbitMQ-消息可靠性以及延迟消息
目录 消息丢失 一、发送者的可靠性 1.1 生产者重试机制 1.2 生产者确认机制 1.3 实现生产者确认 (1)开启生产者确认 (2)定义ReturnCallback (3)定义ConfirmCallback 二、MQ的持久化 2.1 数据持久…...
Hack The Box-Starting Point系列Oopsie
一. 答案 With what kind of tool can intercept web traffic? (什么样的工具可以拦截Web流量?) proxyWhat is the path to the directory on the webserver that returns a login page?(Web服务器上返回登录页面的目录路径是什么?) /cdn-cgi/loginWhat can be modified …...
Linux运维篇-PAM安全模块配置
PAM是什么? PAM(可插入认证模块)是UNIX操作系统上一个实现模块化的身份验证的服务。当程序需要对用户进行身份验证时加载并执行。PAM文件通常位于/etc/pam.d目录中。 而Linux-PAM,是linux可插拔认证模块,是一套可定制…...
麒麟V10系统上安装Oracle
以下是在麒麟V10系统上安装Oracle数据库的详细步骤: 安装前准备 检查系统版本:使用uname -a、cat /etc/os-release等命令检查服务器是麒麟V10系统。 配置固定IP和本地yum源: 挂载麒麟V10的iso文件到/mnt目录,如mount -o loop Ky…...
项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(七)
文章目录 一、题库管理模块实现1、新增题目功能实现1.1 页面设计1.2 前端功能实现1.3 后端功能实现1.4 效果展示2、题目列表功能实现2.1 页面设计2.2 前端功能实现2.3 后端功能实现2.3.1 后端查询题目列表接口实现2.3.2 后端编辑试题接口实现2.4 效果展示二、代码下载一、题库管…...
Elasticsearch:Jira 连接器教程第二部分 - 6 个优化技巧
作者:来自 Elastic Gustavo Llermaly 将 Jira 连接到 Elasticsearch 后,我们现在将回顾最佳实践以升级此部署。 在本系列的第一部分中,我们配置了 Jira 连接器并将对象索引到 Elasticsearch 中。在第二部分中,我们将回顾一些最佳实…...
Vulnhub Earth靶机攻击实战(一)
导语 首先需要我们进入到https://vulnhub.com/entry/the-planets-earth,755/地址去获取Earth靶机,然后导入到VMware中,如下所示。 文章目录 导入虚拟机信息收集路径扫描破解密码反射Shell提权总结导入虚拟机 下载并导入虚拟机,如下所示。 信息收集 首先我们通过arp-sc…...
51单片机——DS18B20温度传感器
由于DS18B20数字温度传感器是单总线接口,所以需要使用51单片机的一个IO口模拟单总线时序与DS18B20通信,将检测的环境温度读取出来 1、DS18B20模块电路 传感器接口的单总线管脚接至单片机P3.7IO口上 2、DS18B20介绍 2.1 DS18B20外观实物图 管脚1为GN…...
HTML5+Canvas实现的鼠标跟随自定义发光线条源码
源码介绍 HTML5Canvas实现的鼠标跟随自定义发光线条特效源码非常炫酷,在黑色的背景中,鼠标滑过即产生彩色变换的发光线条效果,且线条周围散发出火花飞射四溅的粒子光点特效。 效果预览 源码如下 <!DOCTYPE html PUBLIC "-//W3C//D…...
关于jwt和security
JSON Web Token(缩写 JWT) 目前最流行、最常见的跨域认证解决方案,前端后端都需要会使用的东西-腾讯云开发者社区-腾讯云 SpringBoot整合Security安全框架、控制权限让我们一起来看看Security吧!我想每个写项目的人,都…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
